diff --git a/.changeset/afraid-boxes-rhyme.md b/.changeset/afraid-boxes-rhyme.md deleted file mode 100644 index 328a589f7e..0000000000 --- a/.changeset/afraid-boxes-rhyme.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-home': patch ---- - -Add `FavoriteToggle` in `core-components` to standardise favorite marking diff --git a/.changeset/afraid-fans-cross.md b/.changeset/afraid-fans-cross.md deleted file mode 100644 index 1901d8ce0f..0000000000 --- a/.changeset/afraid-fans-cross.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/create-app': patch -'@backstage/cli': patch ---- - -Add `config.d.ts` files to the list of included file in `tsconfig.json`. - -This allows ESLint to detect issues or deprecations in those files. diff --git a/.changeset/angry-hotels-warn.md b/.changeset/angry-hotels-warn.md deleted file mode 100644 index 07caaba574..0000000000 --- a/.changeset/angry-hotels-warn.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/backend-defaults': minor -'@backstage/backend-common': minor ---- - -**BREAKING**: You can no longer supply a `basePath` option to the host discovery implementation. In the new backend system, the ability to choose this path has been removed anyway at the plugin router level. diff --git a/.changeset/beige-jobs-begin.md b/.changeset/beige-jobs-begin.md deleted file mode 100644 index f93e534857..0000000000 --- a/.changeset/beige-jobs-begin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Remove direct `vite` dependency diff --git a/.changeset/big-spies-stare.md b/.changeset/big-spies-stare.md deleted file mode 100644 index bab1643284..0000000000 --- a/.changeset/big-spies-stare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-backend': patch ---- - -Dedicated token for techdocs cache sync diff --git a/.changeset/blue-forks-cry.md b/.changeset/blue-forks-cry.md deleted file mode 100644 index 1bcc1d0b59..0000000000 --- a/.changeset/blue-forks-cry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-aws-alb-provider': patch ---- - -Fix a bug where the signer was checked from the payload instead of the header diff --git a/.changeset/breezy-flowers-dance.md b/.changeset/breezy-flowers-dance.md deleted file mode 100644 index faa9fd0697..0000000000 --- a/.changeset/breezy-flowers-dance.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-app-api': patch ---- - -Deprecate the `featureDiscoveryServiceFactory` in favor of using `@backstage/backend-defaults#discoveryFeatureLoader` instead. diff --git a/.changeset/brown-actors-clap.md b/.changeset/brown-actors-clap.md deleted file mode 100644 index af25a6e87f..0000000000 --- a/.changeset/brown-actors-clap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-plugin-api': minor ---- - -**BREAKING**: The deprecated identity and token manager services have been removed. This means that `coreServices.identity` and `coreServices.tokenManager` are gone, along with related types and utilities in other packages. diff --git a/.changeset/brown-boxes-arrive.md b/.changeset/brown-boxes-arrive.md deleted file mode 100644 index edefc0dcaf..0000000000 --- a/.changeset/brown-boxes-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-plugin-api': minor ---- - -**BREAKING**: Removed support for "v1" extensions. This means that it is no longer possible to declare inputs and outputs as objects when using `createExtension`. In addition, all extension creators except for `createComponentExtension` have been removed, use the equivalent blueprint instead. See the [1.30 migration documentation](https://backstage.io/docs/frontend-system/architecture/migrations/#130) for more information on this change. diff --git a/.changeset/brown-worms-sneeze.md b/.changeset/brown-worms-sneeze.md deleted file mode 100644 index 51359dd384..0000000000 --- a/.changeset/brown-worms-sneeze.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-react': patch ---- - -Fixed issue in useShadowRootElements which could lead to unlimited render loops diff --git a/.changeset/calm-brooms-fail.md b/.changeset/calm-brooms-fail.md deleted file mode 100644 index a87b5ad38c..0000000000 --- a/.changeset/calm-brooms-fail.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -'@backstage/backend-dynamic-feature-service': patch ---- - -Deprecate the `dynamicPluginsServiceRef`, `dynamicPluginsServiceFactory` and `dynamicPluginsServiceFactoryWithOptions` in favor of using the `dynamicPluginsFeatureDiscoveryLoader` to discover dynamic features in a new backend system. - -See usage examples below: - -Example using the `dynamicPluginsFeatureDiscoveryLoader` loader in a backend instance: - -```ts -import { createBackend } from '@backstage/backend-defaults'; -import { dynamicPluginsFeatureDiscoveryLoader } from '@backstage/backend-dynamic-feature-service'; -//... - -const backend = createBackend(); -backend.add(dynamicPluginsFeatureDiscoveryLoader); -//... -backend.start(); -``` - -Passing options to the `dynamicPluginsFeatureDiscoveryLoader` loader in a backend instance: - -```ts -import { createBackend } from '@backstage/backend-defaults'; -import { dynamicPluginsFeatureDiscoveryLoader } from '@backstage/backend-dynamic-feature-service'; -import { myCustomModuleLoader } from './myCustomModuleLoader'; -//... - -const backend = createBackend(); -backend.add( - dynamicPluginsFeatureDiscoveryLoader({ - moduleLoader: myCustomModuleLoader, - }), -); -//... -backend.start(); -``` diff --git a/.changeset/calm-toes-melt.md b/.changeset/calm-toes-melt.md deleted file mode 100644 index b8a7b12c46..0000000000 --- a/.changeset/calm-toes-melt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-app-api': patch ---- - -The `defaultConfigLoader` now also reads configuration from scripts tags with `type="backstage.io/config"`. The tag is expected to contain a JSON-serialized array of `AppConfig` objects. If any of these script tags are present, the injected runtime configuration in the static assets will no longer be used. diff --git a/.changeset/chilled-cameras-change.md b/.changeset/chilled-cameras-change.md deleted file mode 100644 index 8491761594..0000000000 --- a/.changeset/chilled-cameras-change.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-gitlab': patch ---- - -Internal update to use the new cache manager diff --git a/.changeset/chilly-birds-shout.md b/.changeset/chilly-birds-shout.md deleted file mode 100644 index dfa99b6f5d..0000000000 --- a/.changeset/chilly-birds-shout.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/backend-common': minor ---- - -**BREAKING**: Simplifications and cleanup as part of the Backend System 1.0 work. - -- The deprecated `dropDatabase` function has now been removed, without replacement. diff --git a/.changeset/cold-ways-protect.md b/.changeset/cold-ways-protect.md deleted file mode 100644 index 26b693fcc6..0000000000 --- a/.changeset/cold-ways-protect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-dynamic-feature-service': patch ---- - -Relax type check for a plugin's default export to also accept a BackendFeature defined as a function instead of an object diff --git a/.changeset/cool-actors-sin.md b/.changeset/cool-actors-sin.md deleted file mode 100644 index 4d5b2589c5..0000000000 --- a/.changeset/cool-actors-sin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-aws-alb-provider': patch ---- - -Throw correct error when email is missing from the claims diff --git a/.changeset/cool-melons-check.md b/.changeset/cool-melons-check.md deleted file mode 100644 index 462a023dca..0000000000 --- a/.changeset/cool-melons-check.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'@backstage/frontend-test-utils': patch -'@backstage/frontend-app-api': patch -'@backstage/core-compat-api': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-catalog-graph': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-user-settings': patch -'@backstage/plugin-search-react': patch -'@backstage/plugin-kubernetes': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-api-docs': patch -'@backstage/plugin-devtools': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-search': patch -'@backstage/plugin-home': patch -'@backstage/plugin-org': patch ---- - -Updated exports to use the new type parameters for extensions and extension blueprints. diff --git a/.changeset/cool-poems-hammer.md b/.changeset/cool-poems-hammer.md deleted file mode 100644 index fd5897343e..0000000000 --- a/.changeset/cool-poems-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-react': patch ---- - -Slight type tweak to match newer React versions better diff --git a/.changeset/cuddly-rocks-invent.md b/.changeset/cuddly-rocks-invent.md deleted file mode 100644 index c4ce8ebdb9..0000000000 --- a/.changeset/cuddly-rocks-invent.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-dynamic-feature-service': minor ---- - -**BREAKING**: `dynamicPluginsServiceFactory` is no longer callable as a function. If you need to provide options to make a custom factory, use `dynamicPluginsSchemasServiceFactoryWithOptions` instead. diff --git a/.changeset/curly-brooms-raise.md b/.changeset/curly-brooms-raise.md deleted file mode 100644 index 84c8892f7c..0000000000 --- a/.changeset/curly-brooms-raise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend': patch ---- - -Deprecate create router as the legacy backend system will no longer be supported. diff --git a/.changeset/dry-beers-shake.md b/.changeset/dry-beers-shake.md deleted file mode 100644 index 59ff5ead54..0000000000 --- a/.changeset/dry-beers-shake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-defaults': minor ---- - -Initial release of this package, which provides a default app setup through the `createApp` function. This replaces the existing `createApp` method from `@backstage/frontend-app-api`. diff --git a/.changeset/dry-glasses-push.md b/.changeset/dry-glasses-push.md deleted file mode 100644 index 31a04db24a..0000000000 --- a/.changeset/dry-glasses-push.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-node': patch ---- - -Extend the "unable to resolve user identity" message diff --git a/.changeset/dry-monkeys-mate.md b/.changeset/dry-monkeys-mate.md deleted file mode 100644 index 51883ddefa..0000000000 --- a/.changeset/dry-monkeys-mate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -The `KubernetesBuilder` and its related types has been marked as deprecared. This backend should instead be initialized using the new backend system. diff --git a/.changeset/early-swans-grab.md b/.changeset/early-swans-grab.md deleted file mode 100644 index 4526067275..0000000000 --- a/.changeset/early-swans-grab.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch -'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch -'@backstage/plugin-scaffolder-backend-module-gitlab': patch -'@backstage/plugin-scaffolder-backend-module-sentry': patch -'@backstage/plugin-scaffolder-backend-module-yeoman': patch -'@backstage/plugin-scaffolder-backend-module-rails': patch -'@backstage/plugin-user-settings-backend': patch -'@backstage/plugin-devtools-backend': patch ---- - -Update README installation instructions diff --git a/.changeset/eighty-tables-hope.md b/.changeset/eighty-tables-hope.md deleted file mode 100644 index 203cc8bb65..0000000000 --- a/.changeset/eighty-tables-hope.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-test-utils': patch ---- - -Internal update to add support for passing an `ApiRegistry` when creating the node tree diff --git a/.changeset/empty-coats-sparkle.md b/.changeset/empty-coats-sparkle.md deleted file mode 100644 index 7e3b791c6b..0000000000 --- a/.changeset/empty-coats-sparkle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-test-utils': minor ---- - -Removed support for testing "v1" extensions, where outputs are defined as an object rather than an array. diff --git a/.changeset/famous-badgers-drop.md b/.changeset/famous-badgers-drop.md deleted file mode 100644 index af519cf964..0000000000 --- a/.changeset/famous-badgers-drop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-test-utils': patch ---- - -Added missing service mock for `mockServices.rootConfig.mock`, and fixed the definition of `mockServices.rootHttpRouter.factory` to not have a duplicate callback. diff --git a/.changeset/five-tigers-share.md b/.changeset/five-tigers-share.md deleted file mode 100644 index 507614c8b8..0000000000 --- a/.changeset/five-tigers-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Found the issue during testing the clean up of the workspace for the database implementation. diff --git a/.changeset/flat-kangaroos-push.md b/.changeset/flat-kangaroos-push.md deleted file mode 100644 index b046beeeb1..0000000000 --- a/.changeset/flat-kangaroos-push.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@backstage/frontend-plugin-api': minor ---- - -**BREAKING**: Updated the type parameters for `ExtensionDefinition` and `ExtensionBlueprint` to only have a single object parameter. The base type parameter is exported as `ExtensionDefinitionParameters` and `ExtensionBlueprintParameters` respectively. This is shipped as an immediate breaking change as we expect usage of these types to be rare, and it does not affect the runtime behavior of the API. - -This is a breaking change as it changes the type parameters. Existing usage can generally be updated as follows: - -- `ExtensionDefinition` -> `ExtensionDefinition` -- `ExtensionDefinition` -> `ExtensionDefinition` -- `ExtensionDefinition` -> `ExtensionDefinition<{ config: TConfig }>` -- `ExtensionDefinition` -> `ExtensionDefinition<{ config: TConfig, configInput: TConfigInput }>` - -If you need to infer the parameter you can use `ExtensionDefinitionParameters`, for example: - -```ts -import { - ExtensionDefinition, - ExtensionDefinitionParameters, -} from '@backstage/frontend-plugin-api'; - -function myUtility( - ext: ExtensionDefinition, -): T['config'] { - // ... -} -``` - -The same patterns apply to `ExtensionBlueprint`. - -This change is made to improve the readability of API references and ability to evolve the type parameters in the future. diff --git a/.changeset/forty-toes-float.md b/.changeset/forty-toes-float.md deleted file mode 100644 index b6ca5139ea..0000000000 --- a/.changeset/forty-toes-float.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-test-utils': minor ---- - -**BREAKING**: The deprecated `.render()` method has been removed from the extension tester. diff --git a/.changeset/four-parents-buy.md b/.changeset/four-parents-buy.md deleted file mode 100644 index ac216c3c08..0000000000 --- a/.changeset/four-parents-buy.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/frontend-app-api': minor ---- - -**BREAKING**: The `createSpecializedApp` function now creates a bare-bones app without any of the default app structure or APIs. To re-introduce this functionality if you need to use `createSpecializedApp` you can install the `app` plugin from `@backstage/plugin-app`. - -In addition, the `createApp` and `CreateAppFeatureLoader` exports are now deprecated as they are being moved to `@backstage/frontend-defaults`, which should be used instead. diff --git a/.changeset/four-ties-raise.md b/.changeset/four-ties-raise.md deleted file mode 100644 index 163443afff..0000000000 --- a/.changeset/four-ties-raise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': minor ---- - -Add `ui:backstage.review.name` option for custom item names on scaffolder review page, and also add support for rendering the `title` property instead of the key name. diff --git a/.changeset/fresh-apes-dress.md b/.changeset/fresh-apes-dress.md deleted file mode 100644 index 6e20e53bcd..0000000000 --- a/.changeset/fresh-apes-dress.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch -'@backstage/frontend-test-utils': patch -'@backstage/frontend-app-api': patch -'@backstage/plugin-app': minor ---- - -Introduce the `@backstage/plugin-app` package to hold all of the built-in extensions for easy consumption and overriding. diff --git a/.changeset/fresh-bears-prove.md b/.changeset/fresh-bears-prove.md deleted file mode 100644 index a4098a4b18..0000000000 --- a/.changeset/fresh-bears-prove.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/cli': patch -'@backstage/create-app': patch ---- - -Update templates to not refer to backend-common diff --git a/.changeset/fresh-pumas-clean.md b/.changeset/fresh-pumas-clean.md deleted file mode 100644 index 2140f62651..0000000000 --- a/.changeset/fresh-pumas-clean.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-app-backend': patch -'@backstage/plugin-app-node': patch ---- - -Fixing dependency metadata with the new `@backstage/plugin-app` package diff --git a/.changeset/friendly-days-march.md b/.changeset/friendly-days-march.md deleted file mode 100644 index a190c50a43..0000000000 --- a/.changeset/friendly-days-march.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch ---- - -Added `createFrontendModule` as a replacement for `createExtensionOverrides`, which is now deprecated. - -Deprecated the `BackstagePlugin` and `FrontendFeature` type in favor of `FrontendPlugin` and `FrontendFeature` from `@backstage/frontend-app-api` respectively. diff --git a/.changeset/friendly-months-march.md b/.changeset/friendly-months-march.md deleted file mode 100644 index 0bb9cd7cf0..0000000000 --- a/.changeset/friendly-months-march.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/frontend-app-api': patch -'@backstage/core-compat-api': patch ---- - -Added support for new `FrontendPlugin` and `FrontendModule` types. diff --git a/.changeset/funny-houses-rest.md b/.changeset/funny-houses-rest.md deleted file mode 100644 index 21efce8c19..0000000000 --- a/.changeset/funny-houses-rest.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-backend': patch ---- - -The `createRouter` and its related types has been marked as deprecared. This backend should instead be initialized using the new backend system. diff --git a/.changeset/funny-rocks-pull.md b/.changeset/funny-rocks-pull.md deleted file mode 100644 index 9145464137..0000000000 --- a/.changeset/funny-rocks-pull.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': minor -'@backstage/plugin-scaffolder': minor ---- - -Added support for `omitExtraData` and `liveOmit` for rjsf in the scaffolder diff --git a/.changeset/fuzzy-feet-exist.md b/.changeset/fuzzy-feet-exist.md deleted file mode 100644 index 35ef1e58fd..0000000000 --- a/.changeset/fuzzy-feet-exist.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch -'@backstage/plugin-app': patch ---- - -Deprecated the `namespace` option for `createExtensionBlueprint` and `createExtension`, these are no longer required and will default to the `pluginId` instead. - -You can migrate some of your extensions that use `createExtensionOverrides` to using `createFrontendModule` instead and providing a `pluginId` there. - -```ts -// Before -createExtensionOverrides({ - extensions: [ - createExtension({ - name: 'my-extension', - namespace: 'my-namespace', - kind: 'test', - ... - }) - ], -}); - -// After -createFrontendModule({ - pluginId: 'my-namespace', - extensions: [ - createExtension({ - name: 'my-extension', - kind: 'test', - ... - }) - ], -}); -``` diff --git a/.changeset/fuzzy-mails-walk.md b/.changeset/fuzzy-mails-walk.md deleted file mode 100644 index b46fbd59c4..0000000000 --- a/.changeset/fuzzy-mails-walk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-plugin-api': patch ---- - -Deprecate the `featureDiscoveryServiceRef` in favor of using the new `discoveryFeatureLoader` instead. diff --git a/.changeset/fuzzy-spies-share.md b/.changeset/fuzzy-spies-share.md deleted file mode 100644 index 99108b81a0..0000000000 --- a/.changeset/fuzzy-spies-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-signals-backend': patch ---- - -The `createRouter` and its related types has been marked as deprecared. This backend should instead be initialized using the new backend system. diff --git a/.changeset/gentle-hats-act.md b/.changeset/gentle-hats-act.md deleted file mode 100644 index e78076c9c5..0000000000 --- a/.changeset/gentle-hats-act.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-defaults': patch ---- - -Added a new `CreateAppOptions` type for the `createApp` options. diff --git a/.changeset/giant-jars-mix.md b/.changeset/giant-jars-mix.md deleted file mode 100644 index 652e23a280..0000000000 --- a/.changeset/giant-jars-mix.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/create-app': patch -'@backstage/plugin-devtools': patch ---- - -Minor dockerfile syntax update diff --git a/.changeset/gorgeous-scissors-wave.md b/.changeset/gorgeous-scissors-wave.md deleted file mode 100644 index 1db406b940..0000000000 --- a/.changeset/gorgeous-scissors-wave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-app-api': patch ---- - -Updated the error message for missing service dependencies to include the plugin and module IDs. diff --git a/.changeset/great-zebras-hunt.md b/.changeset/great-zebras-hunt.md deleted file mode 100644 index 252f270092..0000000000 --- a/.changeset/great-zebras-hunt.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/cli': patch ---- - -The app build process now outputs an additional `index.html.tmpl` file. This is an non-templated version of the `index.html` file, which can be used to delay templating until runtime. - -The new `index.html.tmpl` file also sets a `backstage-public-path` meta tag to be templated at runtime. The meta tag is in turn picked up by the new `@backstage/cli/config/webpack-public-path.js` entry point script, which uses it to set the runtime public path of the Webpack bundle. diff --git a/.changeset/green-worms-rescue.md b/.changeset/green-worms-rescue.md deleted file mode 100644 index 992012ad7d..0000000000 --- a/.changeset/green-worms-rescue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Add `checks: 'read'` for default GitHub app permissions diff --git a/.changeset/healthy-moons-drum.md b/.changeset/healthy-moons-drum.md deleted file mode 100644 index 0f61d0b141..0000000000 --- a/.changeset/healthy-moons-drum.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/backend-plugin-api': minor ---- - -Removed the following deprecated exports - -- `BackendPluginConfig` use `CreateBackendPluginOptions` -- `BackendModuleConfig` use `CreateBackendModuleOptions` -- `ExtensionPointConfig` use `CreateExtensionPointOptions` diff --git a/.changeset/heavy-suits-judge.md b/.changeset/heavy-suits-judge.md deleted file mode 100644 index d5c00184c7..0000000000 --- a/.changeset/heavy-suits-judge.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-user-settings-backend': patch ---- - -In preparation to stop supporting to the legacy backend system, the `createRouter` function is now deprecated and we strongly recommend you [migrate](https://backstage.io/docs/backend-system/building-backends/migrating) your backend to the new system. diff --git a/.changeset/hip-pandas-think.md b/.changeset/hip-pandas-think.md deleted file mode 100644 index a43349db63..0000000000 --- a/.changeset/hip-pandas-think.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-node': patch ---- - -Fix typo and unify TechDocs casing in doc strings diff --git a/.changeset/khaki-clocks-own.md b/.changeset/khaki-clocks-own.md deleted file mode 100644 index b60de7a1ba..0000000000 --- a/.changeset/khaki-clocks-own.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-test-utils': patch ---- - -Make MySQL pool settings a bit more lax diff --git a/.changeset/khaki-crews-rule.md b/.changeset/khaki-crews-rule.md deleted file mode 100644 index 4d8eb32083..0000000000 --- a/.changeset/khaki-crews-rule.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-app-backend': patch ---- - -**BREAKING**: The app backend now supports the new `index.html.tmpl` output from `@backstage/cli`. If available, the `index.html` will be templated at runtime with the current configuration of the app backend. - -This is marked as a breaking change because you must now supply the app build-time configuration to the backend. This change also affects the public path behavior, where it is no longer necessary to build the app with the correct public path upfront. You now only need to supply a correct `app.baseUrl` to the app backend plugin at runtime. - -An effect that this change has is that the `index.html` will now contain and present the frontend configuration in an easily readable way, which can aid in debugging. This data was always available in the frontend, but it was injected and hidden in the static bundle. - -This templating behavior is enabled by default, but it can be disabled by setting the `app.disableConfigInjection` configuration option to `true`. diff --git a/.changeset/kind-moose-learn.md b/.changeset/kind-moose-learn.md deleted file mode 100644 index 810064b1a1..0000000000 --- a/.changeset/kind-moose-learn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-app-api': minor ---- - -**BREAKING**: The deprecated `identityServiceFactory` and `tokenManagerServiceFactory` have been removed. diff --git a/.changeset/kind-walls-speak.md b/.changeset/kind-walls-speak.md deleted file mode 100644 index 441e247dea..0000000000 --- a/.changeset/kind-walls-speak.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-defaults': minor ---- - -**BREAKING**: The backwards compatibility with plugins using legacy auth through the token manager service has been removed. This means that instead of falling back to using the old token manager, requests towards plugins that don't support the new auth system will simply fail. Please make sure that all plugins in your deployment are hosted within a backend instance from the new backend system. diff --git a/.changeset/large-poets-check.md b/.changeset/large-poets-check.md deleted file mode 100644 index 393d26ac9b..0000000000 --- a/.changeset/large-poets-check.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch -'@backstage/plugin-search-backend-module-techdocs': patch -'@backstage/plugin-search-backend-module-catalog': patch -'@backstage/plugin-search-backend-module-explore': patch -'@backstage/plugin-permission-node': patch -'@backstage/plugin-signals-backend': patch -'@backstage/plugin-auth-backend': patch ---- - -Internal refactor to remove dependencies on the identity and token manager services, which have been removed. Public APIs no longer require the identity service or token manager to be provided. diff --git a/.changeset/loud-brooms-pull.md b/.changeset/loud-brooms-pull.md deleted file mode 100644 index 8ed3e22c5b..0000000000 --- a/.changeset/loud-brooms-pull.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/catalog-client': patch -'@backstage/plugin-catalog-backend': patch ---- - -Moved `getEntities` ordering to utilize database instead of having it inside catalog client - -Please note that the latest version of `@backstage/catalog-client` will not order the entities in the same way as before. This is because the ordering is now done in the database query instead of in the client. If you rely on the ordering of the entities, you may need to update your backend plugin or code to handle this change. diff --git a/.changeset/lucky-sheep-cover.md b/.changeset/lucky-sheep-cover.md deleted file mode 100644 index 9b9420a73a..0000000000 --- a/.changeset/lucky-sheep-cover.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -The `legacyPlugin` and `makeLegacyPlugin` helpers now provide their own shim implementation of the identity and token manager services, as these services are being removed from the new backend system. diff --git a/.changeset/metal-garlics-fetch.md b/.changeset/metal-garlics-fetch.md deleted file mode 100644 index 076b5f34a5..0000000000 --- a/.changeset/metal-garlics-fetch.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch -'@backstage/frontend-app-api': patch ---- - -Moved several implementations of built-in APIs from being hardcoded in the app to instead be provided as API extensions. This moves all API-related inputs from the `app` extension to the respective API extensions. For example, extensions created with `ThemeBlueprint` are now attached to the `themes` input of `api:app-theme` rather than the `app` extension. diff --git a/.changeset/metal-rivers-grin.md b/.changeset/metal-rivers-grin.md deleted file mode 100644 index b70750c98d..0000000000 --- a/.changeset/metal-rivers-grin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-test-utils': patch ---- - -There is a new `mockErrorHandler` utility to help in mocking the error middleware in tests. diff --git a/.changeset/mighty-cheetahs-call.md b/.changeset/mighty-cheetahs-call.md deleted file mode 100644 index f5d17d8b20..0000000000 --- a/.changeset/mighty-cheetahs-call.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-defaults': patch ---- - -Move down the discovery config to be in the root diff --git a/.changeset/mighty-days-kiss.md b/.changeset/mighty-days-kiss.md deleted file mode 100644 index f78e602e25..0000000000 --- a/.changeset/mighty-days-kiss.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/backend-defaults': patch -'@backstage/backend-app-api': patch ---- - -`auth.externalAccess` should be optional in the config schema diff --git a/.changeset/nasty-tigers-knock.md b/.changeset/nasty-tigers-knock.md deleted file mode 100644 index c48d725779..0000000000 --- a/.changeset/nasty-tigers-knock.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/backend-dynamic-feature-service': patch -'@backstage/plugin-app-backend': patch -'@backstage/plugin-catalog-backend-module-aws': patch -'@backstage/plugin-catalog-backend-module-azure': patch -'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch -'@backstage/plugin-catalog-backend-module-bitbucket-server': patch -'@backstage/plugin-catalog-backend-module-gerrit': patch -'@backstage/plugin-catalog-backend-module-github': patch -'@backstage/plugin-catalog-backend-module-gitlab': patch -'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch -'@backstage/plugin-catalog-backend-module-msgraph': patch -'@backstage/plugin-catalog-backend-module-puppetdb': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-events-backend-module-aws-sqs': patch -'@backstage/plugin-events-backend-module-azure': patch -'@backstage/plugin-events-backend-module-bitbucket-cloud': patch -'@backstage/plugin-events-backend-module-gerrit': patch -'@backstage/plugin-events-backend-module-github': patch -'@backstage/plugin-events-backend-module-gitlab': patch -'@backstage/plugin-events-backend': patch -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-permission-backend': patch -'@backstage/plugin-proxy-backend': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-search-backend-module-catalog': patch -'@backstage/plugin-search-backend-module-elasticsearch': patch -'@backstage/plugin-search-backend-module-explore': patch -'@backstage/plugin-search-backend-module-pg': patch -'@backstage/plugin-search-backend-module-techdocs': patch -'@backstage/plugin-search-backend': patch -'@backstage/plugin-techdocs-backend': patch -'@backstage/plugin-user-settings-backend': patch ---- - -Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. diff --git a/.changeset/new-poets-unite.md b/.changeset/new-poets-unite.md deleted file mode 100644 index 83172ffd66..0000000000 --- a/.changeset/new-poets-unite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes': patch ---- - -Make k8s entity content appear on components & resources only by default in new FE system diff --git a/.changeset/ninety-mayflies-raise.md b/.changeset/ninety-mayflies-raise.md deleted file mode 100644 index 62042c2615..0000000000 --- a/.changeset/ninety-mayflies-raise.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-elasticsearch': patch -'@backstage/plugin-search-backend-module-pg': patch ---- - -Internal refactor to use `LoggerService` and `DatabaseService` instead of the legacy `Logger` and `PluginDatabaseManager` types. diff --git a/.changeset/odd-goats-kiss.md b/.changeset/odd-goats-kiss.md deleted file mode 100644 index 0f199c1a1e..0000000000 --- a/.changeset/odd-goats-kiss.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Added `titleComponent` prop to `SignInPage` component to allow further customization of the title using `ReactNode` diff --git a/.changeset/olive-phones-sniff.md b/.changeset/olive-phones-sniff.md deleted file mode 100644 index d70953435c..0000000000 --- a/.changeset/olive-phones-sniff.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Add `pg-format` as a dependency diff --git a/.changeset/orange-shrimps-pull.md b/.changeset/orange-shrimps-pull.md deleted file mode 100644 index 7d509a0e5d..0000000000 --- a/.changeset/orange-shrimps-pull.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-notifications-backend': patch -'@backstage/plugin-notifications': patch ---- - -Implement icon in backend and show icon in table if available. diff --git a/.changeset/plenty-dragons-know.md b/.changeset/plenty-dragons-know.md deleted file mode 100644 index 2aa8458011..0000000000 --- a/.changeset/plenty-dragons-know.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-defaults': patch ---- - -Added `createPublicSignInApp`, used to creating apps for the public entry point. diff --git a/.changeset/popular-cooks-camp.md b/.changeset/popular-cooks-camp.md deleted file mode 100644 index 4049825efd..0000000000 --- a/.changeset/popular-cooks-camp.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-test-utils': minor ---- - -**BREAKING**: Removed service mocks for the identity and token manager services, which have been removed from `@backstage/backend-plugin-api`. diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 0266c977a1..0000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,310 +0,0 @@ -{ - "mode": "pre", - "tag": "next", - "initialVersions": { - "example-app": "0.2.100", - "@backstage/app-defaults": "1.5.10", - "example-app-next": "0.0.14", - "app-next-example-plugin": "0.0.14", - "example-backend": "0.0.29", - "@backstage/backend-app-api": "0.9.0", - "@backstage/backend-common": "0.24.0", - "@backstage/backend-defaults": "0.4.2", - "@backstage/backend-dev-utils": "0.1.5", - "@backstage/backend-dynamic-feature-service": "0.3.0", - "example-backend-legacy": "0.2.101", - "@backstage/backend-openapi-utils": "0.1.16", - "@backstage/backend-plugin-api": "0.8.0", - "@backstage/backend-test-utils": "0.5.0", - "@backstage/catalog-client": "1.6.6", - "@backstage/catalog-model": "1.6.0", - "@backstage/cli": "0.27.0", - "@backstage/cli-common": "0.1.14", - "@backstage/cli-node": "0.2.7", - "@backstage/codemods": "0.1.49", - "@backstage/config": "1.2.0", - "@backstage/config-loader": "1.9.0", - "@backstage/core-app-api": "1.14.2", - "@backstage/core-compat-api": "0.2.8", - "@backstage/core-components": "0.14.10", - "@backstage/core-plugin-api": "1.9.3", - "@backstage/create-app": "0.5.18", - "@backstage/dev-utils": "1.0.37", - "e2e-test": "0.2.19", - "@backstage/e2e-test-utils": "0.1.1", - "@backstage/errors": "1.2.4", - "@backstage/eslint-plugin": "0.1.8", - "@backstage/frontend-app-api": "0.8.0", - "@backstage/frontend-plugin-api": "0.7.0", - "@backstage/frontend-test-utils": "0.1.12", - "@backstage/integration": "1.14.0", - "@backstage/integration-aws-node": "0.1.12", - "@backstage/integration-react": "1.1.30", - "@backstage/release-manifests": "0.0.11", - "@backstage/repo-tools": "0.9.5", - "@techdocs/cli": "1.8.17", - "techdocs-cli-embedded-app": "0.2.99", - "@backstage/test-utils": "1.5.10", - "@backstage/theme": "0.5.6", - "@backstage/types": "1.1.1", - "@backstage/version-bridge": "1.0.8", - "yarn-plugin-backstage": "0.0.1", - "@backstage/plugin-api-docs": "0.11.8", - "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.7", - "@backstage/plugin-app-backend": "0.3.72", - "@backstage/plugin-app-node": "0.1.23", - "@backstage/plugin-app-visualizer": "0.1.9", - "@backstage/plugin-auth-backend": "0.22.10", - "@backstage/plugin-auth-backend-module-atlassian-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.1.15", - "@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.1.6", - "@backstage/plugin-auth-backend-module-bitbucket-provider": "0.1.6", - "@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.2.0", - "@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.2.18", - "@backstage/plugin-auth-backend-module-github-provider": "0.1.20", - "@backstage/plugin-auth-backend-module-gitlab-provider": "0.1.20", - "@backstage/plugin-auth-backend-module-google-provider": "0.1.20", - "@backstage/plugin-auth-backend-module-guest-provider": "0.1.9", - "@backstage/plugin-auth-backend-module-microsoft-provider": "0.1.18", - "@backstage/plugin-auth-backend-module-oauth2-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.1.16", - "@backstage/plugin-auth-backend-module-oidc-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-okta-provider": "0.0.16", - "@backstage/plugin-auth-backend-module-onelogin-provider": "0.1.4", - "@backstage/plugin-auth-backend-module-pinniped-provider": "0.1.17", - "@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.2.4", - "@backstage/plugin-auth-node": "0.5.0", - "@backstage/plugin-auth-react": "0.1.5", - "@backstage/plugin-bitbucket-cloud-common": "0.2.22", - "@backstage/plugin-catalog": "1.22.0", - "@backstage/plugin-catalog-backend": "1.25.0", - "@backstage/plugin-catalog-backend-module-aws": "0.4.0", - "@backstage/plugin-catalog-backend-module-azure": "0.2.0", - "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.3.0", - "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.3.0", - "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.2.0", - "@backstage/plugin-catalog-backend-module-gcp": "0.2.0", - "@backstage/plugin-catalog-backend-module-gerrit": "0.2.0", - "@backstage/plugin-catalog-backend-module-github": "0.7.0", - "@backstage/plugin-catalog-backend-module-github-org": "0.2.0", - "@backstage/plugin-catalog-backend-module-gitlab": "0.4.0", - "@backstage/plugin-catalog-backend-module-gitlab-org": "0.1.0", - "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.5.0", - "@backstage/plugin-catalog-backend-module-ldap": "0.8.0", - "@backstage/plugin-catalog-backend-module-logs": "0.0.2", - "@backstage/plugin-catalog-backend-module-msgraph": "0.6.0", - "@backstage/plugin-catalog-backend-module-openapi": "0.1.41", - "@backstage/plugin-catalog-backend-module-puppetdb": "0.2.0", - "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.1.21", - "@backstage/plugin-catalog-backend-module-unprocessed": "0.4.10", - "@backstage/plugin-catalog-common": "1.0.26", - "@backstage/plugin-catalog-graph": "0.4.8", - "@backstage/plugin-catalog-import": "0.12.2", - "@backstage/plugin-catalog-node": "1.12.5", - "@backstage/plugin-catalog-react": "1.12.3", - "@backstage/plugin-catalog-unprocessed-entities": "0.2.7", - "@backstage/plugin-catalog-unprocessed-entities-common": "0.0.4", - "@backstage/plugin-config-schema": "0.1.58", - "@backstage/plugin-devtools": "0.1.17", - "@backstage/plugin-devtools-backend": "0.3.9", - "@backstage/plugin-devtools-common": "0.1.12", - "@backstage/plugin-events-backend": "0.3.10", - "@backstage/plugin-events-backend-module-aws-sqs": "0.4.0", - "@backstage/plugin-events-backend-module-azure": "0.2.9", - "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.9", - "@backstage/plugin-events-backend-module-gerrit": "0.2.9", - "@backstage/plugin-events-backend-module-github": "0.2.9", - "@backstage/plugin-events-backend-module-gitlab": "0.2.9", - "@backstage/plugin-events-backend-test-utils": "0.1.33", - "@backstage/plugin-events-node": "0.3.9", - "@internal/plugin-todo-list": "1.0.30", - "@internal/plugin-todo-list-backend": "1.0.30", - "@internal/plugin-todo-list-common": "1.0.21", - "@backstage/plugin-home": "0.7.9", - "@backstage/plugin-home-react": "0.1.16", - "@backstage/plugin-kubernetes": "0.11.13", - "@backstage/plugin-kubernetes-backend": "0.18.4", - "@backstage/plugin-kubernetes-cluster": "0.0.14", - "@backstage/plugin-kubernetes-common": "0.8.2", - "@backstage/plugin-kubernetes-node": "0.1.17", - "@backstage/plugin-kubernetes-react": "0.4.2", - "@backstage/plugin-notifications": "0.3.0", - "@backstage/plugin-notifications-backend": "0.3.4", - "@backstage/plugin-notifications-backend-module-email": "0.2.0", - "@backstage/plugin-notifications-common": "0.0.5", - "@backstage/plugin-notifications-node": "0.2.4", - "@backstage/plugin-org": "0.6.28", - "@backstage/plugin-org-react": "0.1.27", - "@backstage/plugin-permission-backend": "0.5.47", - "@backstage/plugin-permission-backend-module-allow-all-policy": "0.1.20", - "@backstage/plugin-permission-common": "0.8.1", - "@backstage/plugin-permission-node": "0.8.1", - "@backstage/plugin-permission-react": "0.4.25", - "@backstage/plugin-proxy-backend": "0.5.4", - "@backstage/plugin-scaffolder": "1.24.0", - "@backstage/plugin-scaffolder-backend": "1.24.0", - "@backstage/plugin-scaffolder-backend-module-azure": "0.1.15", - "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.2.13", - "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.1.13", - "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.1.13", - "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.2.24", - "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.47", - "@backstage/plugin-scaffolder-backend-module-gcp": "0.1.1", - "@backstage/plugin-scaffolder-backend-module-gerrit": "0.1.15", - "@backstage/plugin-scaffolder-backend-module-gitea": "0.1.13", - "@backstage/plugin-scaffolder-backend-module-github": "0.4.1", - "@backstage/plugin-scaffolder-backend-module-gitlab": "0.4.5", - "@backstage/plugin-scaffolder-backend-module-notifications": "0.0.6", - "@backstage/plugin-scaffolder-backend-module-rails": "0.4.40", - "@backstage/plugin-scaffolder-backend-module-sentry": "0.1.31", - "@backstage/plugin-scaffolder-backend-module-yeoman": "0.3.7", - "@backstage/plugin-scaffolder-common": "1.5.5", - "@backstage/plugin-scaffolder-node": "0.4.9", - "@backstage/plugin-scaffolder-node-test-utils": "0.1.10", - "@backstage/plugin-scaffolder-react": "1.11.0", - "@backstage/plugin-search": "1.4.15", - "@backstage/plugin-search-backend": "1.5.15", - "@backstage/plugin-search-backend-module-catalog": "0.2.0", - "@backstage/plugin-search-backend-module-elasticsearch": "1.5.4", - "@backstage/plugin-search-backend-module-explore": "0.2.0", - "@backstage/plugin-search-backend-module-pg": "0.5.33", - "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.2.0", - "@backstage/plugin-search-backend-module-techdocs": "0.2.0", - "@backstage/plugin-search-backend-node": "1.3.0", - "@backstage/plugin-search-common": "1.2.14", - "@backstage/plugin-search-react": "1.7.14", - "@backstage/plugin-signals": "0.0.9", - "@backstage/plugin-signals-backend": "0.1.9", - "@backstage/plugin-signals-node": "0.1.9", - "@backstage/plugin-signals-react": "0.0.4", - "@backstage/plugin-techdocs": "1.10.8", - "@backstage/plugin-techdocs-addons-test-utils": "1.0.37", - "@backstage/plugin-techdocs-backend": "1.10.10", - "@backstage/plugin-techdocs-common": "0.1.0", - "@backstage/plugin-techdocs-module-addons-contrib": "1.1.13", - "@backstage/plugin-techdocs-node": "1.12.9", - "@backstage/plugin-techdocs-react": "1.2.7", - "@backstage/plugin-user-settings": "0.8.11", - "@backstage/plugin-user-settings-backend": "0.2.22", - "@backstage/plugin-user-settings-common": "0.0.1", - "@backstage/plugin-app": "0.0.0", - "@backstage/frontend-defaults": "0.0.0" - }, - "changesets": [ - "afraid-fans-cross", - "angry-hotels-warn", - "big-spies-stare", - "blue-forks-cry", - "breezy-flowers-dance", - "brown-actors-clap", - "brown-boxes-arrive", - "brown-worms-sneeze", - "calm-brooms-fail", - "chilled-cameras-change", - "chilly-birds-shout", - "cold-ways-protect", - "cool-actors-sin", - "cool-melons-check", - "cool-poems-hammer", - "cuddly-rocks-invent", - "curly-brooms-raise", - "dry-beers-shake", - "dry-glasses-push", - "dry-monkeys-mate", - "eighty-tables-hope", - "empty-coats-sparkle", - "famous-badgers-drop", - "five-tigers-share", - "flat-kangaroos-push", - "forty-toes-float", - "four-parents-buy", - "four-ties-raise", - "fresh-apes-dress", - "fresh-bears-prove", - "fresh-pumas-clean", - "friendly-days-march", - "friendly-months-march", - "funny-houses-rest", - "fuzzy-feet-exist", - "fuzzy-mails-walk", - "fuzzy-spies-share", - "gentle-hats-act", - "giant-jars-mix", - "gorgeous-scissors-wave", - "green-worms-rescue", - "healthy-moons-drum", - "heavy-suits-judge", - "hip-pandas-think", - "kind-moose-learn", - "kind-walls-speak", - "large-poets-check", - "loud-brooms-pull", - "lucky-sheep-cover", - "metal-garlics-fetch", - "metal-rivers-grin", - "mighty-cheetahs-call", - "mighty-days-kiss", - "nasty-tigers-knock", - "new-poets-unite", - "ninety-mayflies-raise", - "odd-goats-kiss", - "olive-phones-sniff", - "plenty-dragons-know", - "popular-cooks-camp", - "purple-cows-sing", - "purple-glasses-tease", - "quick-suns-swim", - "quiet-spies-clean", - "rare-feet-melt", - "real-pants-rule", - "renovate-53b7d25", - "renovate-546c524", - "renovate-93d032c", - "renovate-b8911c2", - "rich-bees-tickle", - "rotten-crabs-hear", - "serious-cheetahs-help", - "serious-spies-knock", - "sharp-fans-tan", - "sharp-items-study", - "sharp-mayflies-beg", - "shiny-carpets-worried", - "shiny-carpets-worry", - "shiny-zoos-film", - "short-moles-brush", - "silent-eyes-lie", - "six-goats-sort", - "six-humans-guess", - "sixty-rabbits-cheat", - "slimy-chefs-think", - "smart-gifts-report", - "smart-owls-sell", - "spicy-poems-hammer", - "spicy-vans-eat", - "sweet-cows-clean", - "swift-fishes-rush", - "swift-garlics-mix", - "swift-radios-enjoy", - "swift-seahorses-share", - "tall-camels-march", - "tame-hornets-shake", - "tasty-pigs-vanish", - "thick-walls-share", - "tiny-icons-sit", - "tiny-waves-provide", - "tough-peaches-kneel", - "tricky-apricots-film", - "twenty-clouds-melt", - "twenty-queens-grow", - "unlucky-cycles-clean", - "violet-apricots-smoke", - "violet-jokes-tap", - "warm-boxes-grab-2", - "warm-boxes-grab", - "wild-buses-notice", - "wise-forks-play", - "wise-scissors-help", - "witty-years-cry", - "yellow-bees-hope" - ] -} diff --git a/.changeset/proud-forks-buy.md b/.changeset/proud-forks-buy.md deleted file mode 100644 index 558d5d9078..0000000000 --- a/.changeset/proud-forks-buy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -The `ui:options` for `OwnedEntityPicker` field are now passed to `EntityPicker`. This allows you to use any `ui:options` which `EntityPicker` accepts in the `OwnedEntityPicker` field including `allowArbitraryValues` and `defaultNamespace`. diff --git a/.changeset/purple-cows-sing.md b/.changeset/purple-cows-sing.md deleted file mode 100644 index 3391ced648..0000000000 --- a/.changeset/purple-cows-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-plugin-api': minor ---- - -Removed deprecated `ServiceFactoryOrFunction` type. diff --git a/.changeset/purple-glasses-tease.md b/.changeset/purple-glasses-tease.md deleted file mode 100644 index 5a107c1a2b..0000000000 --- a/.changeset/purple-glasses-tease.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-techdocs': patch -'@backstage/plugin-search-backend-module-catalog': patch -'@backstage/plugin-search-backend-module-explore': patch ---- - -The following collator factories are deprecated, please [migrate](https://backstage.io/docs/backend-system/building-backends/migrating) to the new backend system and follow the instructions below to install collators via module: - -- `DefaultCatalogCollatorFactory`: https://github.com/backstage/backstage/blob/nbs10/search-deprecate-create-router/plugins/search-backend-module-catalog/README.md#installation; -- `ToolDocumentCollatorFactory`: https://github.com/backstage/backstage/blob/nbs10/search-deprecate-create-router/plugins/search-backend-module-explore/README.md#installation; -- `DefaultTechDocsCollatorFactory`: https://github.com/backstage/backstage/blob/nbs10/search-deprecate-create-router/plugins/search-backend-module-techdocs/README.md#installation. diff --git a/.changeset/quick-poets-relax.md b/.changeset/quick-poets-relax.md deleted file mode 100644 index 159744233b..0000000000 --- a/.changeset/quick-poets-relax.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/plugin-search-react': patch ---- - -Internal update to match recent React types diff --git a/.changeset/quick-suns-swim.md b/.changeset/quick-suns-swim.md deleted file mode 100644 index 6113253e22..0000000000 --- a/.changeset/quick-suns-swim.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-defaults': patch ---- - -Accept `ConfigService` instead of `Config` in constructors/factories diff --git a/.changeset/quiet-spies-clean.md b/.changeset/quiet-spies-clean.md deleted file mode 100644 index ba277f4021..0000000000 --- a/.changeset/quiet-spies-clean.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-graph': patch ---- - -Fixed a bug in the `CatalogGraphPage` component where, after clicking on some nodes, clicking the back button would break the navigation. This issue caused the entire navigation to fail and behaved differently across various browsers. diff --git a/.changeset/rare-feet-melt.md b/.changeset/rare-feet-melt.md deleted file mode 100644 index b28b09a29d..0000000000 --- a/.changeset/rare-feet-melt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-user-settings-backend': patch ---- - -Replaced usage of the deprecated identity service with the new HTTP auth service for the new backend system. diff --git a/.changeset/real-pants-rule.md b/.changeset/real-pants-rule.md deleted file mode 100644 index 8d6d3dc708..0000000000 --- a/.changeset/real-pants-rule.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-microsoft-provider': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-catalog-backend-module-msgraph': patch ---- - -Allow users without defined email to be ingested by the `msgraph` catalog plugin and add `userIdMatchingUserEntityAnnotation` sign-in resolver for the Microsoft auth provider to support sign-in for users without defined email. diff --git a/.changeset/red-squids-own.md b/.changeset/red-squids-own.md deleted file mode 100644 index 4f6a1635d6..0000000000 --- a/.changeset/red-squids-own.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/integration': minor ---- - -The Gerrit integration can now resolve Gitiles urls that point to the following -refs: - -- HEAD -- A SHA -- Tag -- Branch diff --git a/.changeset/renovate-2a3da15.md b/.changeset/renovate-2a3da15.md deleted file mode 100644 index 3f612a07ae..0000000000 --- a/.changeset/renovate-2a3da15.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/config-loader': patch ---- - -Updated dependency `typescript-json-schema` to `^0.65.0`. diff --git a/.changeset/renovate-53b7d25.md b/.changeset/renovate-53b7d25.md deleted file mode 100644 index 0c4f7255d3..0000000000 --- a/.changeset/renovate-53b7d25.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/cli': patch -'@backstage/plugin-scaffolder-backend': patch ---- - -Updated dependency `esbuild` to `^0.23.0`. diff --git a/.changeset/renovate-546c524.md b/.changeset/renovate-546c524.md deleted file mode 100644 index bbe6d8afc5..0000000000 --- a/.changeset/renovate-546c524.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/repo-tools': patch ---- - -Updated dependency `@useoptic/openapi-utilities` to `^0.55.0`. diff --git a/.changeset/renovate-93d032c.md b/.changeset/renovate-93d032c.md deleted file mode 100644 index b34e5a2e23..0000000000 --- a/.changeset/renovate-93d032c.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/codemods': patch ---- - -Updated dependency `jscodeshift` to `^0.16.0`. diff --git a/.changeset/renovate-94fd31b.md b/.changeset/renovate-94fd31b.md deleted file mode 100644 index 6c6883c0d6..0000000000 --- a/.changeset/renovate-94fd31b.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -'@backstage/backend-app-api': patch -'@backstage/backend-common': patch -'@backstage/backend-defaults': patch -'@backstage/backend-openapi-utils': patch -'@backstage/backend-test-utils': patch -'@backstage/plugin-app-backend': patch -'@backstage/plugin-auth-backend-module-atlassian-provider': patch -'@backstage/plugin-auth-backend-module-bitbucket-provider': patch -'@backstage/plugin-auth-backend-module-github-provider': patch -'@backstage/plugin-auth-backend-module-gitlab-provider': patch -'@backstage/plugin-auth-backend-module-google-provider': patch -'@backstage/plugin-auth-backend-module-microsoft-provider': patch -'@backstage/plugin-auth-backend-module-oauth2-provider': patch -'@backstage/plugin-auth-backend-module-oidc-provider': patch -'@backstage/plugin-auth-backend-module-okta-provider': patch -'@backstage/plugin-auth-backend-module-onelogin-provider': patch -'@backstage/plugin-auth-backend-module-pinniped-provider': patch -'@backstage/plugin-auth-backend-module-vmware-cloud-provider': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-auth-node': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-devtools-backend': patch -'@backstage/plugin-events-backend': patch -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes-node': patch -'@backstage/plugin-notifications-backend': patch -'@backstage/plugin-permission-backend': patch -'@backstage/plugin-permission-node': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-search-backend': patch -'@backstage/plugin-signals-backend': patch -'@backstage/plugin-techdocs-backend': patch -'@backstage/plugin-techdocs-node': patch -'@backstage/plugin-user-settings-backend': patch ---- - -Updated dependency `supertest` to `^7.0.0`. diff --git a/.changeset/renovate-a674163.md b/.changeset/renovate-a674163.md deleted file mode 100644 index 396139042a..0000000000 --- a/.changeset/renovate-a674163.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-home-react': patch -'@backstage/plugin-home': patch -'@backstage/plugin-scaffolder-react': patch -'@backstage/plugin-scaffolder': patch ---- - -Updated dependency `@rjsf/utils` to `5.20.1`. -Updated dependency `@rjsf/core` to `5.20.1`. -Updated dependency `@rjsf/material-ui` to `5.20.1`. -Updated dependency `@rjsf/validator-ajv8` to `5.20.1`. diff --git a/.changeset/renovate-b8911c2.md b/.changeset/renovate-b8911c2.md deleted file mode 100644 index 9f93a13254..0000000000 --- a/.changeset/renovate-b8911c2.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch ---- - -Updated dependency `use-immer` to `^0.10.0`. diff --git a/.changeset/renovate-c59c91d.md b/.changeset/renovate-c59c91d.md deleted file mode 100644 index eede7c81c2..0000000000 --- a/.changeset/renovate-c59c91d.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-explore': patch ---- - -Updated dependency `@backstage-community/plugin-explore-common` to `^0.0.5`. diff --git a/.changeset/rich-bees-tickle.md b/.changeset/rich-bees-tickle.md deleted file mode 100644 index a2af89c867..0000000000 --- a/.changeset/rich-bees-tickle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-defaults': patch ---- - -Wrap scheduled tasks from the scheduler core service now in OpenTelemetry spans diff --git a/.changeset/rich-cheetahs-vanish.md b/.changeset/rich-cheetahs-vanish.md deleted file mode 100644 index 26cc55b917..0000000000 --- a/.changeset/rich-cheetahs-vanish.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/plugin-techdocs-node': patch ---- - -Internal fixes to match `testcontainers` update diff --git a/.changeset/rotten-crabs-hear.md b/.changeset/rotten-crabs-hear.md deleted file mode 100644 index 69148c59c1..0000000000 --- a/.changeset/rotten-crabs-hear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-notifications-backend': patch ---- - -Validate notification link when new notification is created diff --git a/.changeset/rude-fireants-accept.md b/.changeset/rude-fireants-accept.md deleted file mode 100644 index 0b543eddb2..0000000000 --- a/.changeset/rude-fireants-accept.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-plugin-api': patch ---- - -Add a `toJSON` on refs so that they can appear in expectations in jest tests diff --git a/.changeset/serious-cheetahs-help.md b/.changeset/serious-cheetahs-help.md deleted file mode 100644 index 88bad696c5..0000000000 --- a/.changeset/serious-cheetahs-help.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-search-react': patch -'@backstage/plugin-catalog': patch ---- - -The `/alpha` export no longer export extension creators for the new frontend system, existing usage should be switched to use the equivalent extension blueprint instead. For more information see the [new frontend system 1.30 migration documentation](https://backstage.io/docs/frontend-system/architecture/migrations#130). diff --git a/.changeset/serious-spies-knock.md b/.changeset/serious-spies-knock.md deleted file mode 100644 index 1484753019..0000000000 --- a/.changeset/serious-spies-knock.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Skip start without proper config diff --git a/.changeset/sharp-fans-tan.md b/.changeset/sharp-fans-tan.md deleted file mode 100644 index add4a85758..0000000000 --- a/.changeset/sharp-fans-tan.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch ---- - -- Fix secret widget field not displaying as required. -- Fix secret widget not able to be required inside nested objects. -- Fix secret widget not able to be disabled. -- Support `minLength` and `maxLength` properties for secret widget. diff --git a/.changeset/sharp-items-study.md b/.changeset/sharp-items-study.md deleted file mode 100644 index 61e8af54b6..0000000000 --- a/.changeset/sharp-items-study.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -'@backstage/backend-defaults': patch ---- - -Exports the `discoveryFeatureLoader` as a replacement for the deprecated `featureDiscoveryService`. -The `discoveryFeatureLoader` is a new backend system [feature loader](https://backstage.io/docs/backend-system/architecture/feature-loaders/) that discovers backend features from the current `package.json` and its dependencies. -Here is an example using the `discoveryFeatureLoader` loader in a new backend instance: - -```ts -import { createBackend } from '@backstage/backend-defaults'; -import { discoveryFeatureLoader } from '@backstage/backend-defaults'; -//... - -const backend = createBackend(); -//... -backend.add(discoveryFeatureLoader); -//... -backend.start(); -``` diff --git a/.changeset/sharp-mayflies-beg.md b/.changeset/sharp-mayflies-beg.md deleted file mode 100644 index c78335c187..0000000000 --- a/.changeset/sharp-mayflies-beg.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-app-api': patch ---- - -Internal refactor following removal of v1 extension support. The app implementation itself still supports v1 extensions at runtime. diff --git a/.changeset/shiny-carpets-worried.md b/.changeset/shiny-carpets-worried.md deleted file mode 100644 index c0093b49aa..0000000000 --- a/.changeset/shiny-carpets-worried.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-compat-api': minor ---- - -**BREAKING**: The `namespace` parameter for API's is now defaulted to the `pluginId` which was discovered. This means that if you're overriding API's by using ID's directly, they might have changed to include the plugin ID too. diff --git a/.changeset/shiny-carpets-worry.md b/.changeset/shiny-carpets-worry.md deleted file mode 100644 index 53688df920..0000000000 --- a/.changeset/shiny-carpets-worry.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch -'@backstage/frontend-test-utils': patch -'@backstage/frontend-app-api': patch ---- - -Removing deprecated `namespace` parameter in favour of `pluginId` instead diff --git a/.changeset/shiny-zoos-film.md b/.changeset/shiny-zoos-film.md deleted file mode 100644 index f9fb8cdce5..0000000000 --- a/.changeset/shiny-zoos-film.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'@backstage/plugin-signals': patch ---- - -Added a `SignalsDisplay` extension to allows the signals plugin to be installed in an app as follows: - -```tsx -export default app.createRoot( - <> - - - - - - {routes} - - , -); -``` - -With this in place you can remove the explicit installation via the `plugins` option for `createApp`. diff --git a/.changeset/short-moles-brush.md b/.changeset/short-moles-brush.md deleted file mode 100644 index 033805c2b5..0000000000 --- a/.changeset/short-moles-brush.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -`createRouter` and its related types has been marked as deprecared. This backend should instead be initialized using the new backend system. diff --git a/.changeset/silent-eyes-lie.md b/.changeset/silent-eyes-lie.md deleted file mode 100644 index e9da3d2685..0000000000 --- a/.changeset/silent-eyes-lie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/test-utils': minor ---- - -Added the icons option to the renderInTestApp function's TestAppOptions to be forwarded to the icons option of `createApp`. diff --git a/.changeset/six-goats-sort.md b/.changeset/six-goats-sort.md deleted file mode 100644 index 5df8924066..0000000000 --- a/.changeset/six-goats-sort.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-gitlab': patch ---- - -Remove dependency on backend-common diff --git a/.changeset/six-humans-guess.md b/.changeset/six-humans-guess.md deleted file mode 100644 index 60845257c8..0000000000 --- a/.changeset/six-humans-guess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-proxy-backend': patch ---- - -Deprecated `createRouter` and its router options in favour of the new backend system. diff --git a/.changeset/sixty-rabbits-cheat.md b/.changeset/sixty-rabbits-cheat.md deleted file mode 100644 index 0161e272ed..0000000000 --- a/.changeset/sixty-rabbits-cheat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-react': minor ---- - -Make use of the `useApp` hook to retrieve the specified search icon in the SearchBar diff --git a/.changeset/slimy-chefs-think.md b/.changeset/slimy-chefs-think.md deleted file mode 100644 index 7fa546a399..0000000000 --- a/.changeset/slimy-chefs-think.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-notifications-backend-module-email': patch -'@backstage/plugin-catalog-backend-module-github': patch -'@backstage/plugin-notifications-backend': patch -'@backstage/plugin-techdocs-backend': patch ---- - -Refactor to use injected catalog client in the new backend system diff --git a/.changeset/smart-gifts-report.md b/.changeset/smart-gifts-report.md deleted file mode 100644 index fa3c8d96e9..0000000000 --- a/.changeset/smart-gifts-report.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-catalog-unprocessed-entities': patch ---- - -Show additional info on DevTools unprocessed entities table - -- Location path (so that it's easier to search the failed entity from the YAML URL) -- Time info of last discovery and next refresh time so that users can be aware of it and can sort the errors based on the time. diff --git a/.changeset/smart-owls-sell.md b/.changeset/smart-owls-sell.md deleted file mode 100644 index 0a2b555a20..0000000000 --- a/.changeset/smart-owls-sell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-defaults': patch ---- - -Properly indent the config schema diff --git a/.changeset/spicy-poems-hammer.md b/.changeset/spicy-poems-hammer.md deleted file mode 100644 index 23e86e178e..0000000000 --- a/.changeset/spicy-poems-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-node': patch ---- - -As the `@backstage/backend-common` package is deprecated, we have updated the `techdocs-node` package to stop depending on it. diff --git a/.changeset/spicy-vans-eat.md b/.changeset/spicy-vans-eat.md deleted file mode 100644 index 037a5f18e0..0000000000 --- a/.changeset/spicy-vans-eat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-app-api': patch ---- - -Fix feature loaders in CJS double-default nested builds diff --git a/.changeset/sweet-cows-clean.md b/.changeset/sweet-cows-clean.md deleted file mode 100644 index fa2004186e..0000000000 --- a/.changeset/sweet-cows-clean.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-test-utils': patch ---- - -Added the ability to provide additional `extensions` and `features` to `renderInTestApp` diff --git a/.changeset/swift-fishes-rush.md b/.changeset/swift-fishes-rush.md deleted file mode 100644 index ccfa3a0e40..0000000000 --- a/.changeset/swift-fishes-rush.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Fixed an issue where published frontend packages would end up with an invalid import structure if a single module imported both `.css` and `.svg` files. diff --git a/.changeset/swift-garlics-mix.md b/.changeset/swift-garlics-mix.md deleted file mode 100644 index fc0993be3f..0000000000 --- a/.changeset/swift-garlics-mix.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -'@backstage/backend-app-api': minor -'@backstage/backend-common': minor -'@backstage/backend-defaults': minor -'@backstage/backend-plugin-api': minor -'@backstage/backend-test-utils': minor -'@backstage/plugin-auth-backend-module-atlassian-provider': minor -'@backstage/plugin-auth-backend-module-aws-alb-provider': minor -'@backstage/plugin-auth-backend-module-azure-easyauth-provider': minor -'@backstage/plugin-auth-backend-module-bitbucket-provider': minor -'@backstage/plugin-auth-backend-module-cloudflare-access-provider': minor -'@backstage/plugin-auth-backend-module-gcp-iap-provider': minor -'@backstage/plugin-auth-backend-module-github-provider': minor -'@backstage/plugin-auth-backend-module-gitlab-provider': minor -'@backstage/plugin-auth-backend-module-google-provider': minor -'@backstage/plugin-auth-backend-module-guest-provider': minor -'@backstage/plugin-auth-backend-module-microsoft-provider': minor -'@backstage/plugin-auth-backend-module-oauth2-provider': minor -'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': minor -'@backstage/plugin-auth-backend-module-oidc-provider': minor -'@backstage/plugin-auth-backend-module-okta-provider': minor -'@backstage/plugin-auth-backend-module-onelogin-provider': minor -'@backstage/plugin-auth-backend-module-pinniped-provider': minor -'@backstage/plugin-auth-backend-module-vmware-cloud-provider': minor -'@backstage/plugin-auth-backend': minor -'@backstage/plugin-catalog-backend-module-backstage-openapi': minor -'@backstage/plugin-catalog-backend-module-gcp': minor -'@backstage/plugin-catalog-backend-module-github-org': minor -'@backstage/plugin-catalog-backend-module-gitlab-org': minor -'@backstage/plugin-catalog-backend-module-ldap': minor -'@backstage/plugin-catalog-backend-module-logs': minor -'@backstage/plugin-catalog-backend-module-openapi': minor -'@backstage/plugin-catalog-backend-module-scaffolder-entity-model': minor -'@backstage/plugin-catalog-backend-module-unprocessed': minor -'@backstage/plugin-devtools-backend': minor -'@backstage/plugin-events-node': minor -'@backstage/plugin-notifications-backend-module-email': minor -'@backstage/plugin-notifications-backend': minor -'@backstage/plugin-permission-backend-module-allow-all-policy': minor -'@backstage/plugin-scaffolder-backend-module-azure': minor -'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': minor -'@backstage/plugin-scaffolder-backend-module-bitbucket-server': minor -'@backstage/plugin-scaffolder-backend-module-bitbucket': minor -'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': minor -'@backstage/plugin-scaffolder-backend-module-cookiecutter': minor -'@backstage/plugin-scaffolder-backend-module-gcp': minor -'@backstage/plugin-scaffolder-backend-module-gerrit': minor -'@backstage/plugin-scaffolder-backend-module-gitea': minor -'@backstage/plugin-scaffolder-backend-module-github': minor -'@backstage/plugin-scaffolder-backend-module-gitlab': minor -'@backstage/plugin-scaffolder-backend-module-notifications': minor -'@backstage/plugin-scaffolder-backend-module-rails': minor -'@backstage/plugin-scaffolder-backend-module-sentry': minor -'@backstage/plugin-scaffolder-backend-module-yeoman': minor -'@backstage/plugin-search-backend-module-stack-overflow-collator': minor -'@backstage/plugin-signals-backend': minor ---- - -**BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. - -This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. - -As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. diff --git a/.changeset/swift-radios-enjoy.md b/.changeset/swift-radios-enjoy.md deleted file mode 100644 index 495117e3c6..0000000000 --- a/.changeset/swift-radios-enjoy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Internal refactor to re-declare the token manager service which was removed from `@backstage/backend-plugin-api`, but is still supported in this package for backwards compatibility. diff --git a/.changeset/swift-seahorses-share.md b/.changeset/swift-seahorses-share.md deleted file mode 100644 index deaf2ab042..0000000000 --- a/.changeset/swift-seahorses-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch ---- - -Updated the README to include documentation for the new backend support diff --git a/.changeset/tall-camels-march.md b/.changeset/tall-camels-march.md deleted file mode 100644 index 892a8f19af..0000000000 --- a/.changeset/tall-camels-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-signals': patch ---- - -Put a name on the `SignalsDisplay` component extension diff --git a/.changeset/tame-hornets-shake.md b/.changeset/tame-hornets-shake.md deleted file mode 100644 index bf96193b55..0000000000 --- a/.changeset/tame-hornets-shake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch ---- - -Fix an issue where keys with duplicate final key parts are not all displayed in the `ReviewState`. Change the way the keys are formatted to include the full schema path, separated by `>`. diff --git a/.changeset/tasty-pigs-vanish.md b/.changeset/tasty-pigs-vanish.md deleted file mode 100644 index 73556c70d5..0000000000 --- a/.changeset/tasty-pigs-vanish.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': patch ---- - -Entity presentation api now only fetches fields that are required to display entity title diff --git a/.changeset/thick-walls-share.md b/.changeset/thick-walls-share.md deleted file mode 100644 index 798b1561b4..0000000000 --- a/.changeset/thick-walls-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-gerrit': patch ---- - -Added test cases for publish:gerrit action examples diff --git a/.changeset/tiny-icons-sit.md b/.changeset/tiny-icons-sit.md deleted file mode 100644 index 7dc35a46fd..0000000000 --- a/.changeset/tiny-icons-sit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-react': patch ---- - -Small internal fix to better work with recent `lodash` versions diff --git a/.changeset/tiny-waves-provide.md b/.changeset/tiny-waves-provide.md deleted file mode 100644 index aabafcfd6b..0000000000 --- a/.changeset/tiny-waves-provide.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/backend-plugin-api': patch -'@backstage/backend-defaults': patch -'@backstage/backend-common': patch ---- - -Allow the cache service to accept the human duration format for TTL diff --git a/.changeset/tough-peaches-kneel.md b/.changeset/tough-peaches-kneel.md deleted file mode 100644 index 7674da8879..0000000000 --- a/.changeset/tough-peaches-kneel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Fixed an issue with the by-query call, where ordering by a field that does not exist on all entities led to not all results being returned diff --git a/.changeset/tricky-apricots-film.md b/.changeset/tricky-apricots-film.md deleted file mode 100644 index 7b1c28fdb9..0000000000 --- a/.changeset/tricky-apricots-film.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-signals-react': patch ---- - -Fix for `useSignal` returning the inverse value for `isSignalsAvailable`. diff --git a/.changeset/twenty-clouds-melt.md b/.changeset/twenty-clouds-melt.md deleted file mode 100644 index dee2b0f8ef..0000000000 --- a/.changeset/twenty-clouds-melt.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -'@backstage/backend-defaults': minor ---- - -**BREAKING**: The default backend instance no longer provides implementations for the identity and token manager services, which have been removed from `@backstage/backend-plugin-api`. - -If you rely on plugins that still require these services, you can add them to your own backend by re-creating the service reference and factory. - -The following can be used to implement the identity service: - -```ts -import { - coreServices, - createServiceFactory, - createServiceRef, -} from '@backstage/backend-plugin-api'; -import { - DefaultIdentityClient, - IdentityApi, -} from '@backstage/plugin-auth-node'; - -backend.add( - createServiceFactory({ - service: createServiceRef({ id: 'core.identity' }), - deps: { - discovery: coreServices.discovery, - }, - async factory({ discovery }) { - return DefaultIdentityClient.create({ discovery }); - }, - }), -); -``` - -The following can be used to implement the token manager service: - -```ts -import { ServerTokenManager, TokenManager } from '@backstage/backend-common'; -import { createBackend } from '@backstage/backend-defaults'; -import { - coreServices, - createServiceFactory, - createServiceRef, -} from '@backstage/backend-plugin-api'; - -backend.add( - createServiceFactory({ - service: createServiceRef({ id: 'core.tokenManager' }), - deps: { - config: coreServices.rootConfig, - logger: coreServices.rootLogger, - }, - createRootContext({ config, logger }) { - return ServerTokenManager.fromConfig(config, { - logger, - allowDisabledTokenManager: true, - }); - }, - async factory(_deps, tokenManager) { - return tokenManager; - }, - }), -); -``` diff --git a/.changeset/twenty-jobs-repeat.md b/.changeset/twenty-jobs-repeat.md deleted file mode 100644 index 1ea98319d7..0000000000 --- a/.changeset/twenty-jobs-repeat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Enhanced the table hover effect with a lighter color and updated the border radius to align with Backstage's theme styling diff --git a/.changeset/twenty-queens-grow.md b/.changeset/twenty-queens-grow.md deleted file mode 100644 index 1236488dbe..0000000000 --- a/.changeset/twenty-queens-grow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': minor ---- - -Added EntityOwnerPicker component to the TemplateListPage to allow filtering on owner diff --git a/.changeset/unlucky-cycles-clean.md b/.changeset/unlucky-cycles-clean.md deleted file mode 100644 index 5b582dec59..0000000000 --- a/.changeset/unlucky-cycles-clean.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch ---- - -Scaffolder review page shows static amount of asterisks for secret fields. diff --git a/.changeset/violet-apricots-smoke.md b/.changeset/violet-apricots-smoke.md deleted file mode 100644 index 80caf466eb..0000000000 --- a/.changeset/violet-apricots-smoke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Remove references to the `@backstage/backend-tasks` in versions of the `create-app` package, as it has been deprecated. diff --git a/.changeset/violet-jokes-tap.md b/.changeset/violet-jokes-tap.md deleted file mode 100644 index 5b79ced6cd..0000000000 --- a/.changeset/violet-jokes-tap.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch -'@backstage/frontend-app-api': patch ---- - -Added support for defining `replaces` in `createExtensionInput` which will allow extensions to redirect missing `attachTo` points to an input of the created extension. - -```ts -export const AppThemeApi = ApiBlueprint.makeWithOverrides({ - name: 'app-theme', - inputs: { - themes: createExtensionInput([ThemeBlueprint.dataRefs.theme], { - // attachTo: { id: 'app', input: 'themes'} will be redirected to this input instead - replaces: [{ id: 'app', input: 'themes' }], - }), - }, - factory: () { - ... - } -}); -``` diff --git a/.changeset/warm-boxes-grab-2.md b/.changeset/warm-boxes-grab-2.md deleted file mode 100644 index f1928c8be7..0000000000 --- a/.changeset/warm-boxes-grab-2.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch ---- - -A new `apis` parameter has been added to `factory` for extensions. This is a way to access utility APIs without being coupled to the React context. diff --git a/.changeset/warm-boxes-grab.md b/.changeset/warm-boxes-grab.md deleted file mode 100644 index e10dbe086c..0000000000 --- a/.changeset/warm-boxes-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-app-api': patch ---- - -Added the `root` extension the replace the `app` extension as the root of the app. diff --git a/.changeset/wild-buses-notice.md b/.changeset/wild-buses-notice.md deleted file mode 100644 index 3620786aa8..0000000000 --- a/.changeset/wild-buses-notice.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-defaults': patch ---- - -Added the option to skip database migrations by setting `skipMigrations: true` in config. This can be done globally in the database config or by plugin id. diff --git a/.changeset/wise-forks-play.md b/.changeset/wise-forks-play.md deleted file mode 100644 index 1c8be76d19..0000000000 --- a/.changeset/wise-forks-play.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@backstage/backend-defaults': minor ---- - -**BREAKING**: Simplifications and cleanup as part of the Backend System 1.0 work. - -For the `/database` subpath exports: - -- The deprecated `dropDatabase` function has now been removed, without replacement. -- The deprecated `LegacyRootDatabaseService` type has now been removed. -- The return type from `DatabaseManager.forPlugin` is now directly a `DatabaseService`, as arguably expected. -- `DatabaseManager.forPlugin` now requires the `deps` argument, with the logger and lifecycle services. - -For the `/cache` subpath exports: - -- The `PluginCacheManager` type has been removed. You can still import it from `@backstage/backend-common`, but it's deprecated there, and you should move off of that package by migrating fully to the new backend system. -- Accordingly, `CacheManager.forPlugin` immediately returns a `CacheService` instead of a `PluginCacheManager`. The outcome of this is that you no longer need to make the extra `.getClient()` call. The old `CacheManager` with the old behavior still exists on `@backstage/backend-common`, but the above recommendations apply. diff --git a/.changeset/wise-scissors-help.md b/.changeset/wise-scissors-help.md deleted file mode 100644 index c8fd2d4c44..0000000000 --- a/.changeset/wise-scissors-help.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/backend-defaults': patch -'@backstage/backend-app-api': patch -'@backstage/backend-common': patch -'@backstage/backend-plugin-api': patch ---- - -Updates to the config schema to match reality diff --git a/.changeset/witty-years-cry.md b/.changeset/witty-years-cry.md deleted file mode 100644 index 48c566730b..0000000000 --- a/.changeset/witty-years-cry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-permission-backend': patch ---- - -Deprecated `createRouter` and its router options in favour of the new backend system. diff --git a/.changeset/yellow-bees-hope.md b/.changeset/yellow-bees-hope.md deleted file mode 100644 index 1ea8690c20..0000000000 --- a/.changeset/yellow-bees-hope.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-app-api': minor ---- - -Removed deprecated `icons` property passing to `createApp` and `createSpecializedApp`. Use `IconBundleBlueprint.make` to create extensions instead and include them in the app. diff --git a/.eslintrc.js b/.eslintrc.js index 01cad187be..eb2a07b3b0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -263,4 +263,7 @@ module.exports = { }, }, ], + settings: { + 'testing-library/custom-queries': 'off', + }, }; diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index 320bb2e0ce..2cbcc484f7 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -39,6 +39,8 @@ Brex broadcasted bugfixes builtins +bundler +bundlers callout CDNs Chai @@ -112,6 +114,7 @@ DOMPurify don'ts dynatrace Dynatrace +dyno ecco elasticsearch Entra @@ -163,6 +166,7 @@ Heroku hoc horizontalpodautoscalers Hostname +hotspot hotspots howto http @@ -199,6 +203,7 @@ Knex knip Koyeb KPIs +kroki Kuang kubectl kubernetes @@ -279,6 +284,8 @@ OpenSearch OpenShift openssl orgs +Overridable +overridable padding paddings pagerduty @@ -452,6 +459,7 @@ unmount unregister unregistering unregistration +unstarred untracked upsert upstreams diff --git a/.github/workflows/api-breaking-changes-comment.yml b/.github/workflows/api-breaking-changes-comment.yml index abb98c03e1..038061adac 100644 --- a/.github/workflows/api-breaking-changes-comment.yml +++ b/.github/workflows/api-breaking-changes-comment.yml @@ -22,7 +22,7 @@ jobs: action: ${{ steps.event.outputs.ACTION }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: disable-sudo: true egress-policy: block @@ -90,7 +90,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 # Identify comment to be updated - name: Find comment for API Changes diff --git a/.github/workflows/api-breaking-changes.yml b/.github/workflows/api-breaking-changes.yml index 12d33b450e..62195b155e 100644 --- a/.github/workflows/api-breaking-changes.yml +++ b/.github/workflows/api-breaking-changes.yml @@ -14,11 +14,11 @@ jobs: if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: # Fetch the commit that's merged into the base rather than the target ref # This will let us diff only the contents of the PR, without fetching more history @@ -27,13 +27,13 @@ jobs: run: git fetch --depth 1 origin ${{ github.base_ref }} - name: setup-node - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: 18.x registry-url: https://registry.npmjs.org/ - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: linux-v18 @@ -46,7 +46,7 @@ jobs: cat ${{ github.event_path }} > event.json - name: Upload Artifacts - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 with: name: preview-spec path: | diff --git a/.github/workflows/automate_area-labels.yml b/.github/workflows/automate_area-labels.yml index fcff8bc11a..89e1adc3c3 100644 --- a/.github/workflows/automate_area-labels.yml +++ b/.github/workflows/automate_area-labels.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index 1d8e29fab0..a0c0e44902 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -23,18 +23,18 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: # Fetch the commit that's merged into the base rather than the target ref # This will let us diff only the contents of the PR, without fetching more history ref: 'refs/pull/${{ github.event.pull_request.number }}/merge' - name: fetch base run: git fetch --depth 1 origin ${{ github.base_ref }} - - uses: backstage/actions/changeset-feedback@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + - uses: backstage/actions/changeset-feedback@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 name: Generate feedback with: diff-ref: 'origin/master' diff --git a/.github/workflows/automate_merge_message.yml b/.github/workflows/automate_merge_message.yml index 2bc7940971..4b388d7850 100644 --- a/.github/workflows/automate_merge_message.yml +++ b/.github/workflows/automate_merge_message.yml @@ -24,11 +24,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: ref: '${{ github.event.pull_request.merge_commit_sha }}' diff --git a/.github/workflows/automate_stale.yml b/.github/workflows/automate_stale.yml index 1ffeac1cc0..b7adc5235a 100644 --- a/.github/workflows/automate_stale.yml +++ b/.github/workflows/automate_stale.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/ci-noop.yml b/.github/workflows/ci-noop.yml index 9b54e6fe6f..321e4b57e7 100644 --- a/.github/workflows/ci-noop.yml +++ b/.github/workflows/ci-noop.yml @@ -40,7 +40,7 @@ jobs: name: Test ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5cbe2e15a3..a50be35023 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,20 +28,20 @@ jobs: name: Install ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -64,20 +64,20 @@ jobs: name: Verify ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -90,6 +90,9 @@ jobs: - name: verify local dependency ranges run: node scripts/verify-local-dependencies.js + - name: verify peer dependency ranges + run: yarn lint:peer-deps + - name: check for missing repo fixes run: yarn fix --check @@ -206,7 +209,7 @@ jobs: INTEGRATION_TEST_AZURE_TOKEN: ${{ secrets.INTEGRATION_TEST_AZURE_TOKEN }} steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: fetch master branch run: git fetch origin master @@ -216,13 +219,13 @@ jobs: run: git fetch origin ${{ github.event.pull_request.base.ref }} - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -230,11 +233,20 @@ jobs: - name: verify release run: node scripts/verify-release.js + # Use the lower-level cache actions for the success cache, so that we can store the cache even on failed builds + - name: restore backstage-cli cache + uses: actions/cache/restore@v4 + with: + path: .cache/backstage-cli + key: ${{ runner.os }}-v${{ matrix.node-version }}-backstage-cli-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-v${{ matrix.node-version }}-backstage-cli- + - name: lint changed packages - run: yarn backstage-cli repo lint --since origin/master + run: yarn backstage-cli repo lint --since origin/master --successCache --successCacheDir .cache/backstage-cli - name: test changed packages - run: yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M --since origin/master + run: yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M --since origin/master --successCache --successCacheDir .cache/backstage-cli env: BACKSTAGE_TEST_DISABLE_DOCKER: 1 BACKSTAGE_TEST_DATABASE_POSTGRES16_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres16.ports[5432] }} @@ -242,6 +254,14 @@ jobs: BACKSTAGE_TEST_DATABASE_MYSQL8_CONNECTION_STRING: mysql://root:root@localhost:${{ job.services.mysql8.ports[3306] }}/ignored BACKSTAGE_TEST_CACHE_REDIS7_CONNECTION_STRING: redis://localhost:${{ job.services.redis.ports[6379] }} + # Always save success cache even if there were failures, that way it can be used in re-triggered builds + - name: save backstage-cli cache + uses: actions/cache/save@v4 + if: always() + with: + path: .cache/backstage-cli + key: ${{ runner.os }}-v${{ matrix.node-version }}-backstage-cli-${{ github.run_id }} + # We run the test cases before verifying the specs to prevent any failing tests from causing errors. - name: verify openapi specs against test cases run: yarn backstage-repo-tools repo schema openapi test diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml index 2ac5434f72..48ac1db289 100644 --- a/.github/workflows/cron.yml +++ b/.github/workflows/cron.yml @@ -10,11 +10,11 @@ jobs: timeout-minutes: 10 steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: backstage/actions/cron@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + - uses: backstage/actions/cron@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index 9da484a497..d5934e8ad8 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -20,24 +20,24 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: path: backstage ref: ${{ github.event.client_payload.version && env.RELEASE_VERSION || github.ref }} - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -45,6 +45,7 @@ jobs: run: npx @backstage/create-app env: BACKSTAGE_APP_NAME: example-app + YARN_ENABLE_IMMUTABLE_INSTALLS: false - name: yarn build run: yarn build:backend diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index f07cf21784..92c5f28498 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -54,18 +54,18 @@ jobs: result-encoding: string - name: checkout latest release - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: ref: refs/tags/${{ steps.find-release.outputs.result }} - name: use node.js 18.x - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v18.x @@ -73,7 +73,7 @@ jobs: run: yarn build:api-docs - name: upload API reference - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 with: name: stable-reference path: docs/reference/ @@ -91,21 +91,21 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: checkout master - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: use node.js 18.x - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v18.x @@ -113,7 +113,7 @@ jobs: run: yarn build:api-docs - name: upload API reference - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 with: name: next-reference path: docs/reference/ @@ -130,7 +130,7 @@ jobs: working-directory: storybook - name: storybook upload - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 with: name: storybook path: storybook/dist/ @@ -158,19 +158,19 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: use node.js 18.x - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth # Stable docs - name: checkout latest release - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: ref: refs/tags/${{ needs.stable.outputs.release }} @@ -184,6 +184,11 @@ jobs: name: stable-reference path: docs/reference + - name: grab lastest releases docs + run: | + git fetch origin master --depth 1 + git checkout FETCH_HEAD -- docs/releases + - name: generate stable docs run: yarn docusaurus docs:version stable working-directory: microsite @@ -193,7 +198,7 @@ jobs: # Next docs - name: checkout master - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: clean: false @@ -220,7 +225,7 @@ jobs: run: ls microsite/build && ls microsite/build/storybook - name: Deploy both microsite and storybook to gh-pages - uses: JamesIves/github-pages-deploy-action@920cbb300dcd3f0568dbc42700c61e2fd9e6139c # v4.6.4 + uses: JamesIves/github-pages-deploy-action@881db5376404c5c8d621010bcbec0310b58d5e29 # v4.6.8 with: branch: gh-pages folder: microsite/build diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index f86c1db4fa..bd00c2055d 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -68,15 +68,15 @@ jobs: INTEGRATION_TEST_AZURE_TOKEN: ${{ secrets.INTEGRATION_TEST_AZURE_TOKEN }} steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} @@ -93,8 +93,16 @@ jobs: - name: validate config run: yarn backstage-cli config:check --lax + - name: backstage-cli cache + uses: actions/cache@v4 + with: + path: .cache/backstage-cli + key: ${{ runner.os }}-v${{ matrix.node-version }}-backstage-cli-${{ github.run_id }} + restore-keys: | + ${{ runner.os }}-v${{ matrix.node-version }}-backstage-cli- + - name: lint - run: yarn backstage-cli repo lint + run: yarn backstage-cli repo lint --successCache --successCacheDir .cache/backstage-cli - name: type checking and declarations run: yarn tsc:full @@ -107,12 +115,7 @@ jobs: - name: test (and upload coverage) run: | - yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M --coverage - # bash <(curl -s https://codecov.io/bash) - # Upload code coverage for some specific flags. Also see .codecov.yml - # bash <(curl -s https://codecov.io/bash) -f packages/core-app-api/coverage/* -F core-app-api - # bash <(curl -s https://codecov.io/bash) -f packages/core-components/coverage/* -F core-components - # bash <(curl -s https://codecov.io/bash) -f packages/core-plugin-api/coverage/* -F core-plugin-api + yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M --coverage --successCache --successCacheDir .cache/backstage-cli env: BACKSTAGE_TEST_DISABLE_DOCKER: 1 BACKSTAGE_TEST_DATABASE_POSTGRES16_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres16.ports[5432] }} @@ -144,7 +147,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/issue.yaml b/.github/workflows/issue.yaml index c8793d3ab0..2cd355b75e 100644 --- a/.github/workflows/issue.yaml +++ b/.github/workflows/issue.yaml @@ -16,7 +16,7 @@ jobs: if: github.repository == 'backstage/backstage' steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/pr-review-comment-trigger.yaml b/.github/workflows/pr-review-comment-trigger.yaml index 62bf70187b..9ebfbee3b0 100644 --- a/.github/workflows/pr-review-comment-trigger.yaml +++ b/.github/workflows/pr-review-comment-trigger.yaml @@ -20,7 +20,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -30,7 +30,7 @@ jobs: run: | mkdir -p ./pr echo $PR_NUMBER > ./pr/pr_number - - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: pr_number-${{ github.event.pull_request.number }} path: pr/ diff --git a/.github/workflows/pr-review-comment.yaml b/.github/workflows/pr-review-comment.yaml index 6133fdef8a..517a978a83 100644 --- a/.github/workflows/pr-review-comment.yaml +++ b/.github/workflows/pr-review-comment.yaml @@ -17,7 +17,7 @@ jobs: steps: # Inspired by https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#using-data-from-the-triggering-workflow - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -40,7 +40,7 @@ jobs: const prNumber = artifact.name.slice('pr_number-'.length) core.setOutput('pr-number', prNumber); - - uses: backstage/actions/re-review@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + - uses: backstage/actions/re-review@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 510d5242f4..7639ac14db 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -18,12 +18,12 @@ jobs: if: github.repository == 'backstage/backstage' && ( github.event.pull_request || github.event.issue.pull_request ) steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: PR sync - uses: backstage/actions/pr-sync@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/pr-sync@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 8196e61bb9..23799a9a6b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -29,12 +29,12 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: 'Checkout code' - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: persist-credentials: false @@ -58,7 +58,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: 'Upload artifact' - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: SARIF file path: results.sarif @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/upload-sarif@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: sarif_file: results.sarif diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml index 859f077095..2aa84bb208 100644 --- a/.github/workflows/sync_code-formatting.yml +++ b/.github/workflows/sync_code-formatting.yml @@ -10,22 +10,22 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: # Fetch changes to previous commit - required for 'only_changed' in Prettier action fetch-depth: 0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/sync_dependabot-changesets.yml b/.github/workflows/sync_dependabot-changesets.yml index 357b7f5cd9..a89ab7629a 100644 --- a/.github/workflows/sync_dependabot-changesets.yml +++ b/.github/workflows/sync_dependabot-changesets.yml @@ -11,12 +11,12 @@ jobs: if: github.actor == 'dependabot[bot]' && github.repository == 'backstage/backstage' steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: fetch-depth: 2 ref: ${{ github.head_ref }} diff --git a/.github/workflows/sync_release-manifest.yml b/.github/workflows/sync_release-manifest.yml index 898aaa74c7..4b209739c7 100644 --- a/.github/workflows/sync_release-manifest.yml +++ b/.github/workflows/sync_release-manifest.yml @@ -8,24 +8,24 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: # 'v' prefix is added here for the tag, we keep it out of the manifest logic ref: v${{ github.event.client_payload.version }} - name: use node.js 18.x - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v18.x @@ -35,7 +35,7 @@ jobs: # Checkout backstage/versions into /backstage/versions, which is where store the output - name: Checkout versions - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: repository: backstage/versions path: versions diff --git a/.github/workflows/sync_renovate-changesets.yml b/.github/workflows/sync_renovate-changesets.yml index 19072a443b..1c9b4a6186 100644 --- a/.github/workflows/sync_renovate-changesets.yml +++ b/.github/workflows/sync_renovate-changesets.yml @@ -11,12 +11,12 @@ jobs: if: github.actor == 'renovate[bot]' && github.repository == 'backstage/backstage' steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: fetch-depth: 2 ref: ${{ github.head_ref }} diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml index 0369f89648..1390b4ec61 100644 --- a/.github/workflows/sync_snyk-github-issues.yml +++ b/.github/workflows/sync_snyk-github-issues.yml @@ -12,24 +12,24 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: use node.js 18.x - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v18.x - name: Create Snyk report - uses: snyk/actions/node@9213221444c2dc9e8b2502c1e857c26d851e84a7 # master + uses: snyk/actions/node@cdb760004ba9ea4d525f2e043745dfe85bb9077e # master continue-on-error: true # Snyk CLI exits with error when vulnerabilities are found with: args: > diff --git a/.github/workflows/sync_snyk-monitor.yml b/.github/workflows/sync_snyk-monitor.yml index da13ec653f..f746a8c339 100644 --- a/.github/workflows/sync_snyk-monitor.yml +++ b/.github/workflows/sync_snyk-monitor.yml @@ -25,13 +25,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Monitor and Synchronize Snyk Policies - uses: snyk/actions/node@9213221444c2dc9e8b2502c1e857c26d851e84a7 # master + uses: snyk/actions/node@cdb760004ba9ea4d525f2e043745dfe85bb9077e # master with: command: monitor args: > @@ -46,7 +46,7 @@ jobs: # Above we run the `monitor` command, this runs the `test` command which is # the one that generates the SARIF report that we can upload to GitHub. - name: Create Snyk report - uses: snyk/actions/node@9213221444c2dc9e8b2502c1e857c26d851e84a7 # master + uses: snyk/actions/node@cdb760004ba9ea4d525f2e043745dfe85bb9077e # master continue-on-error: true # To make sure that SARIF upload gets called with: args: > @@ -58,6 +58,6 @@ jobs: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} NODE_OPTIONS: --max-old-space-size=7168 - name: Upload Snyk report - uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/upload-sarif@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: sarif_file: snyk.sarif diff --git a/.github/workflows/sync_version-packages.yml b/.github/workflows/sync_version-packages.yml index 3a29ba3c79..77fb5f951e 100644 --- a/.github/workflows/sync_version-packages.yml +++ b/.github/workflows/sync_version-packages.yml @@ -14,11 +14,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: fetch-depth: 20000 fetch-tags: true diff --git a/.github/workflows/verify_accessibility-noop.yml b/.github/workflows/verify_accessibility-noop.yml index 8d8cb30789..37ce3513e9 100644 --- a/.github/workflows/verify_accessibility-noop.yml +++ b/.github/workflows/verify_accessibility-noop.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/verify_accessibility.yml b/.github/workflows/verify_accessibility.yml index fd86075ea0..29ff740f68 100644 --- a/.github/workflows/verify_accessibility.yml +++ b/.github/workflows/verify_accessibility.yml @@ -20,17 +20,17 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Use Node.js 18.x - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: 18.x - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v18.x - name: run Lighthouse CI diff --git a/.github/workflows/verify_codeql.yml b/.github/workflows/verify_codeql.yml index 177348c30f..c77b65929b 100644 --- a/.github/workflows/verify_codeql.yml +++ b/.github/workflows/verify_codeql.yml @@ -42,12 +42,12 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: Checkout repository - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. @@ -55,7 +55,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/init@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -66,7 +66,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/autobuild@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -80,4 +80,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/analyze@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 diff --git a/.github/workflows/verify_docs-quality.yml b/.github/workflows/verify_docs-quality.yml index 8e1a91d850..176136f821 100644 --- a/.github/workflows/verify_docs-quality.yml +++ b/.github/workflows/verify_docs-quality.yml @@ -12,11 +12,11 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 # Vale does not support file excludes, so we use the script to generate a list of files instead # The action also does not allow args or a local config file to be passed in, so the files array diff --git a/.github/workflows/verify_e2e-kubernetes-noop.yml b/.github/workflows/verify_e2e-kubernetes-noop.yml deleted file mode 100644 index 544c4e6186..0000000000 --- a/.github/workflows/verify_e2e-kubernetes-noop.yml +++ /dev/null @@ -1,30 +0,0 @@ -# NO-OP placeholder that always passes for other paths -# This is here so that we're able to set the status check as required - -name: E2E Kubernetes Void -on: - pull_request: - paths-ignore: - - 'yarn.lock' - - '.github/workflows/verify_e2e-kubernetes.yml' - - 'packages/backend-common/src/**' - -permissions: - contents: read - -jobs: - verify: - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [18.x, 20.x] - - name: Kubernetes ${{ matrix.node-version }} - steps: - - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 - with: - egress-policy: audit - - - run: echo NOOP diff --git a/.github/workflows/verify_e2e-kubernetes.yml b/.github/workflows/verify_e2e-kubernetes.yml deleted file mode 100644 index 18eee7e3f2..0000000000 --- a/.github/workflows/verify_e2e-kubernetes.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: E2E Kubernetes -on: - # NOTE: If you change these you must update verify_kubernetes-noop.yml as well - pull_request: - paths: - - 'yarn.lock' - - '.github/workflows/verify_e2e-kubernetes.yml' - - 'packages/backend-common/src/**' - -jobs: - verify: - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [18.x, 20.x] - - env: - CI: true - KUBERNETES_TESTS: true - - name: Kubernetes ${{ matrix.node-version }} - steps: - - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 - with: - egress-policy: audit - - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 - with: - node-version: ${{ matrix.node-version }} - registry-url: https://registry.npmjs.org/ # Needed for auth - - - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 - with: - cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} - - - name: bootstrap kind - uses: helm/kind-action@0025e74a8c7512023d06dc019c617aa3cf561fde # v1.10.0 - - - name: kubernetes test - working-directory: packages/backend-common - run: yarn test:kubernetes diff --git a/.github/workflows/verify_e2e-linux-noop.yml b/.github/workflows/verify_e2e-linux-noop.yml index 024f288255..f4f24f14f5 100644 --- a/.github/workflows/verify_e2e-linux-noop.yml +++ b/.github/workflows/verify_e2e-linux-noop.yml @@ -29,7 +29,7 @@ jobs: name: E2E Linux ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 1c1ed7a3eb..0c487429e9 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -41,11 +41,11 @@ jobs: name: E2E Linux ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Configure Git run: | @@ -53,12 +53,12 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index e2788e2d47..f6b300af7e 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -30,11 +30,11 @@ jobs: name: Techdocs steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.9' diff --git a/.github/workflows/verify_e2e-windows-noop.yml b/.github/workflows/verify_e2e-windows-noop.yml index 5244a78919..b3998522c9 100644 --- a/.github/workflows/verify_e2e-windows-noop.yml +++ b/.github/workflows/verify_e2e-windows-noop.yml @@ -25,7 +25,7 @@ jobs: name: E2E Windows ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index 8663e420eb..b6bfef51e5 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -31,7 +31,7 @@ jobs: name: E2E Windows ${{ matrix.node-version }} steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit @@ -42,7 +42,7 @@ jobs: git config --global core.autocrlf false git config --global core.eol lf - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Configure Git run: | @@ -50,7 +50,7 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth @@ -78,7 +78,7 @@ jobs: uses: browser-actions/setup-chrome@803ef6dfb4fdf22089c9563225d95e4a515820a0 # latest - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} diff --git a/.github/workflows/verify_fossa.yml b/.github/workflows/verify_fossa.yml index 3a5899d3cf..5deaeafeaf 100644 --- a/.github/workflows/verify_fossa.yml +++ b/.github/workflows/verify_fossa.yml @@ -14,12 +14,12 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Install Fossa run: "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | bash" diff --git a/.github/workflows/verify_microsite-noop.yml b/.github/workflows/verify_microsite-noop.yml index daec683da6..f4c5ea4104 100644 --- a/.github/workflows/verify_microsite-noop.yml +++ b/.github/workflows/verify_microsite-noop.yml @@ -21,7 +21,7 @@ jobs: name: Microsite steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index a290b221b2..1d6aac21ca 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -24,14 +24,14 @@ jobs: name: Microsite steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: use node.js 18.x - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: 18.x - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5 diff --git a/.github/workflows/verify_microsite_accessibility-noop.yml b/.github/workflows/verify_microsite_accessibility-noop.yml index a3e8e7fdec..49721e7f51 100644 --- a/.github/workflows/verify_microsite_accessibility-noop.yml +++ b/.github/workflows/verify_microsite_accessibility-noop.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/verify_microsite_accessibility.yml b/.github/workflows/verify_microsite_accessibility.yml index b2c98c1e58..6626f4def9 100644 --- a/.github/workflows/verify_microsite_accessibility.yml +++ b/.github/workflows/verify_microsite_accessibility.yml @@ -15,14 +15,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: Use Node.js 18.x - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: 18.x diff --git a/.github/workflows/verify_storybook-noop.yml b/.github/workflows/verify_storybook-noop.yml index 1f9ded9587..115c79c9c3 100644 --- a/.github/workflows/verify_storybook-noop.yml +++ b/.github/workflows/verify_storybook-noop.yml @@ -28,7 +28,7 @@ jobs: name: Storybook steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index 9bea2f3dc9..3f7b2e4a5b 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -28,21 +28,21 @@ jobs: name: Storybook steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 with: fetch-depth: 0 # Required to retrieve git history - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth - name: yarn install - uses: backstage/actions/yarn-install@3c138326f7fcbf253b88170c1f29bae8e975d47c # v0.6.14 + uses: backstage/actions/yarn-install@25145dd4117d50e1da9330e9ed2893bc6b75373e # v0.6.15 with: cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }} - name: storybook yarn install @@ -51,7 +51,7 @@ jobs: - run: yarn build-storybook - - uses: chromaui/action@b984808b772126a9f44b2b7737b131b68a2ede32 # v11 + - uses: chromaui/action@bbbf288765438d5fd2be13e1d80d542a39e74108 # v11 with: token: ${{ secrets.GITHUB_TOKEN }} # projectToken intentionally shared to allow collaborators to run Chromatic on forks diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml index feb209dc2b..d184bdca08 100644 --- a/.github/workflows/verify_windows.yml +++ b/.github/workflows/verify_windows.yml @@ -29,14 +29,14 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@5c7944e73c4c2a096b17a9cb74d65b6c2bbafbde # v2.9.1 + uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1 with: egress-policy: audit - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4.0.4 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth @@ -46,7 +46,7 @@ jobs: run: yarn install --immutable - name: lint - run: yarn backstage-cli repo lint + run: yarn backstage-cli repo lint --successCache - name: type checking and declarations run: yarn tsc:full @@ -55,7 +55,7 @@ jobs: run: yarn lint:type-deps - name: test - run: yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M + run: yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M --successCache env: BACKSTAGE_TEST_DISABLE_DOCKER: 1 diff --git a/.prettierignore b/.prettierignore index 3a16bd1388..c7a16065e5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,8 +4,13 @@ microsite coverage *.hbs templates +# old reports api-report.md api-report-*.md +# new reports +report.api.md +report-*.api.md + knip-report.md cli-report.md plugins/scaffolder-backend/sample-templates diff --git a/ADOPTERS.md b/ADOPTERS.md index 76114b6965..3f9005ecb9 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -274,3 +274,4 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [DPG Media](https://www.dpgmediagroup.com) | [@benjidotsh](https://github.com/benjidotsh), [@lvstb](https://github.com/lvstb), [@ssliman](https://github.com/ssliman), [@edewel-beep](https://github.com/edewel-beep) | Access to infrastructure, documentation and internal tooling | | [Baloise](https://www.baloise.ch) | [@dweber019](https://github.com/dweber019), [@mikevader](https://github.com/mikevader) | We are using Backstage as internal developer protal for use cases like software catalog, documentation, infrastructure. | | [Cigna](https://www.cigna.com/) / [Evernorth](https://www.evernorth.com/) | [@raphtalia](https://github.com/raphtalia), [Devon Paluso](mailto:Devon.Paluso@evernorth.com), [Bryan Rego](mailto:Bryan.Rego@evernorth.com), [Ian Skillings](mailto:Ian.Skillings@evernorth.com) | Internal developer portal providing TechDocs, software templates, centralized secret management, with information consolidation from ServiceNow, Okta, GitHub, GitLab, and WebEx. | +| [Infobip](https://www.infobip.com/) | [Antonio Ereiz](https://github.com/SonilPro) | Visual representation of all our entities registered within an existing internal catalog, along with a UI for editing their manifests. It serves as the go-to place for new internal tools that require a user interface and provides standardization of new components using Software Templates. diff --git a/OWNERS.md b/OWNERS.md index b145205539..44f4755b8e 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -185,11 +185,11 @@ Scope: The Backstage Documentation ## Sponsors -| Name | Organization | GitHub | Email | -| ----------------- | ------------ | ------------------------------------------- | ------------------ | -| Niklas Gustavsson | Spotify | [protocol7](https://github.com/protocol7) | ngn@spotify.com | -| Dave Zolotusky | Spotify | [dzolotusky](https://github.com/dzolotusky) | dzolo@spotify.com | -| Helen Greul | Spotify | [helengreul](https://github.com/helengreul) | heleng@spotify.com | +| Name | Organization | GitHub | Email | +| ----------------- | ------------ | ------------------------------------------- | ----------------- | +| Niklas Gustavsson | Spotify | [protocol7](https://github.com/protocol7) | ngn@spotify.com | +| Dave Zolotusky | Spotify | [dzolotusky](https://github.com/dzolotusky) | dzolo@spotify.com | +| Pia Nilsson | Spotify | [pianilsson](https://github.com/pianilsson) | pia@spotify.com | ## Organization Members @@ -224,9 +224,10 @@ Scope: The Backstage Documentation ## Emeritus End User Sponsors -| Name | Organization | GitHub | Discord | -| --------- | ------------ | ------------------------------------------- | -------------- | -| Lee Mills | Spotify | [leemills83](https://github.com/leemills83) | `.binarypoint` | +| Name | Organization | GitHub | Discord | +| ----------- | ------------ | ------------------------------------------- | -------------- | +| Lee Mills | Spotify | [leemills83](https://github.com/leemills83) | `.binarypoint` | +| Helen Greul | Spotify | [helengreul](https://github.com/helengreul) | `helen_greul` | ## Emeritus Project Area Maintainers diff --git a/README.md b/README.md index 4cba1082b0..64a7b34b64 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,10 @@ To engage with our community, you can use the following resources: - [Backstage Community Sessions](https://github.com/backstage/community) - Join monthly meetups and explore Backstage community - Give us a star ⭐️ - If you are using Backstage or think it is an interesting project, we would love a star ❤️ +## Governance + +See the [GOVERNANCE.md](https://github.com/backstage/community/blob/main/GOVERNANCE.md) document in the [backstage/community](https://github.com/backstage/community) repository. + ## License Copyright 2020-2024 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage diff --git a/REVIEWING.md b/REVIEWING.md index c443c15d77..66af880f43 100644 --- a/REVIEWING.md +++ b/REVIEWING.md @@ -68,7 +68,7 @@ In general our changeset feedback bot will take care of informing whether a chan Changes that do NOT need a new changeset: -- Changes to any test, storybook, or other local development files, for example, `MyComponent.test.tsx`, `MyComponent.stories.tsx`, `**mocks**/MyMock.ts`, `.eslintrc.js`, `setupTests.ts`, or `api-report.md`. Explained differently, it is only files that affect the published package that need changesets, such as source files and additional resources like `package.json`, `README.md`, `config.d.ts`, etc. +- Changes to any test, storybook, or other local development files, for example, `MyComponent.test.tsx`, `MyComponent.stories.tsx`, `**mocks**/MyMock.ts`, `.eslintrc.js`, `setupTests.ts`, or `report.api.md`. Explained differently, it is only files that affect the published package that need changesets, such as source files and additional resources like `package.json`, `README.md`, `config.d.ts`, etc. - When tweaking a change that has not yet been released, you can rely on and potentially modify the existing changeset instead. - Changes that do not belong to a published packages, either because it's not a package at all, such as `docs/`, or because the package is private, such as `packages/app`. - Changes that do not end up having an effect on the published package, such as whitespace fixes or code formatting changes. Although it's also fine to have a short changeset for these kind of changes too. @@ -168,7 +168,7 @@ In this section we will be talking about changed "types", but by that we mean an #### API Reports -We generate API Reports using the [API Extractor](https://api-extractor.com/) tool. These reports are generated for most packages in the Backstage repository, and are stored in the `api-report.md` file of each package. For CLI package we use custom tooling, and instead store the result in `cli-report.md`. Whenever the public API of a package changes, the API Report needs to be updated to reflect the new state of the API. Our CI checks will fail if the API reports are not up to date in a pull request. +We generate API Reports using the [API Extractor](https://api-extractor.com/) tool. These reports are generated for most packages in the Backstage repository, and are stored in the `report.api.md` file of each package. For CLI package we use custom tooling, and instead store the result in `cli-report.md`. Whenever the public API of a package changes, the API Report needs to be updated to reflect the new state of the API. Our CI checks will fail if the API reports are not up to date in a pull request. Each API report contains a list of all the exported types of each package. As long as the API report does not have any warnings it will contain the full publicly facing API of the package, meaning you do not need to consider any other changes to the package from the point of view of TypeScript API stability. diff --git a/beps/0001-notifications-system/README.md b/beps/0001-notifications-system/README.md index 541e75e555..91c1a81fe1 100644 --- a/beps/0001-notifications-system/README.md +++ b/beps/0001-notifications-system/README.md @@ -74,7 +74,7 @@ The `signal` plugin provides the following: ### Signals Plugin -In the backend the signal plugin implements a general purpose message bus for sending signals from backend plugins to connected users. It relies on the `EventBroker` from the [events plugin](https://github.com/backstage/backstage/blob/master/plugins/events-backend/README.md) for the actual message passing in the backend. In order to support scaled deployments, each signal backend instance has a separate subscription to the event broker so that each instance receives all events. It is then up to each backend instance to filter out events that are not relevant to it. For this reason, signals should be kept lightweight and not contain unnecessary data. +In the backend the signal plugin implements a general purpose message bus for sending signals from backend plugins to connected users. It relies on the `EventsService` from the [events plugin](https://github.com/backstage/backstage/blob/master/plugins/events-node/README.md) for the actual message passing in the backend. In order to support scaled deployments, each signal backend instance has a separate subscription to the events service so that each instance receives all events. It is then up to each backend instance to filter out events that are not relevant to it. For this reason, signals should be kept lightweight and not contain unnecessary data. In the frontend the signal plugin has a persistent connection to the signal backend. This is initially implemented as a WebSocket connection, but could in the future also receive fallback mechanisms such as Server Sent Events or long polling. It is important that this connection is authenticated as we will be routing signals to specific users. The exact implementation of the authentication is not part of this proposal, but it should use whatever the outcome of the discussion in issue [#19581](https://github.com/backstage/backstage/issues/19581) is. @@ -427,22 +427,22 @@ The notification and signal plugins are released as two new plugins in the Backs For the notification plugin to reach a stable release we much reach the following: -- A stable notifications payload format. -- A stable notifications recipient filter format. -- The event broker must have at least one implementation that supports scaled deployments. +- [ ] A stable notifications payload format. +- [ ] A stable notifications recipient filter format. +- [x] The events service must have at least one implementation that supports scaled deployments. Done in #24916. For the signal plugin to reach a stable release we much reach the following: -- A stable signal recipient filter format. -- A stable signal channel API in the frontend. +- [ ] A stable signal recipient filter format. +- [ ] A stable signal channel API in the frontend. If any changes are required to the frontend framework to facilitate the implementation of notifications or signals, these will be released as experimental alpha features. They will stay in alpha until they are deemed stable enough, which must happen before a stable release of the notifications system. ## Dependencies -Since the signal plugin relies on the event broker for communication, it is a dependency for the notifications system as a whole. The event broker does not currently implement any transport for scaled deployments, which is a requirement for scaled deployments of the notification system. +~Since the signal plugin relies on the events service for communication, it is a dependency for the notifications system as a whole. The events service does not currently implement any transport for scaled deployments, which is a requirement for scaled deployments of the notification system. -Alternatively the notifications can work without the signals, but in this case the notifications are updated only during page refresh. +Alternatively the notifications can work without the signals, but in this case the notifications are updated only during page refresh.~ ## Alternatives diff --git a/beps/0001-notifications-system/notifications-architecture.drawio.svg b/beps/0001-notifications-system/notifications-architecture.drawio.svg index 9f8194b499..9c6bb00119 100644 --- a/beps/0001-notifications-system/notifications-architecture.drawio.svg +++ b/beps/0001-notifications-system/notifications-architecture.drawio.svg @@ -1,4 +1,4 @@ - + @@ -133,13 +133,13 @@
- Event Broker + EventsService
- Event Broker + EventsService diff --git a/beps/0002-dynamic-frontend-plugins/README.md b/beps/0002-dynamic-frontend-plugins/README.md index db223c959d..1007732eec 100644 --- a/beps/0002-dynamic-frontend-plugins/README.md +++ b/beps/0002-dynamic-frontend-plugins/README.md @@ -595,7 +595,7 @@ Singleton "might have to" list: > NOTE: Can leverage [Generate module sharing map](#generate-module-sharing-map). -Component libraries are usually large (thousands of svg icons in @mui/icons) and it is inefficient to share them as a whole. **Tree shaking is disabled for shared modules**. That means sharing large packages in multiple versions will result in a bloated JS in browsers. +Component libraries are usually large (thousands of SVG icons in `@mui/icons`) and it is inefficient to share them as a whole. **Tree shaking is disabled for shared modules**. That means sharing large packages in multiple versions will result in a bloated JS in browsers. Sharing components like these can be done on module level. Instead of sharing the entire package, share its individual components: @@ -625,7 +625,7 @@ There is also a conflict with the chunk splitting currently used in the Backstag #### Webpack chunk optimization -Custom webpack chunk splitting configuration can be problematic, especially when modifying runtime and vendor chunks. Module federation creates its own chunks. Shared modules that are not set up to be eagerly loaded (using the `eager` configuration) **cannot be included inside the entry script**. With a custom chunk splitting setup, they can potentially be forced into the entry script, causing runtime errors. On the other hand, some critical runtime code that has to be in the entry script, cna be forced out of it. This is particularly problematic for the "shell" application. +Custom webpack chunk splitting configuration can be problematic, especially when modifying runtime and vendor chunks. Module federation creates its own chunks. Shared modules that are not set up to be eagerly loaded (using the `eager` configuration) **cannot be included inside the entry script**. With a custom chunk splitting setup, they can potentially be forced into the entry script, causing runtime errors. On the other hand, some critical runtime code that has to be in the entry script, can be forced out of it. This is particularly problematic for the "shell" application. Chunk optimization should be disabled for the initial implementation. diff --git a/docs/accessibility/index.md b/docs/accessibility/index.md index da10d60dd2..4073afcf4c 100644 --- a/docs/accessibility/index.md +++ b/docs/accessibility/index.md @@ -52,12 +52,12 @@ Running this command will use the [Lighthouse config](https://github.com/backsta ::: -### Use Lighthouse Github Action on your own repo +### Use Lighthouse GitHub Action on your own repo If your Backstage plugin lives outside of the [Backstage main repository](https://github.com/backstage/backstage/), and you use GitHub Actions for continuous integration, we encourage you to add and modify the [Accessibility GitHub workflow](https://github.com/backstage/backstage/blob/master/.github/workflows/verify_accessibility.yml) to your needs. ### Report identified issues -It’s important to remember that automated checks can only catch a small number of accessibility issues, therefore we also encourage you to conduct manual testing of your plugins using Assistive technology (screen readers, alternative navigation, and screen magnifiers are a few examples). +It’s important to remember that automated checks can only catch a small number of accessibility issues, therefore, we also encourage you to conduct manual testing of your plugins using Assistive technology (screen readers, alternative navigation, and screen magnifiers are a few examples). If you have identified accessibility issues and don’t have time to contribute a fix, please open an issue over at [Backstage Issues](https://github.com/backstage/backstage/issues) to let us know. diff --git a/docs/api/deprecations.md b/docs/api/deprecations.md index 664d7c327d..a9127426f0 100644 --- a/docs/api/deprecations.md +++ b/docs/api/deprecations.md @@ -26,7 +26,7 @@ opens up for other type of themes, and removes the hardcoded usage of To migrate an existing theme, remove the `theme` property and move it over to a new `Provider` component, using `ThemeProvider` from Material UI to provide the new -theme, along with ``. For example a theme that currently looks like +theme, along with ``. For example, a theme that currently looks like this: ```tsx @@ -84,8 +84,8 @@ migrate to your own custom API. First, you'll need to define a new Utility API reference. If you're only using the API for sign-in, you can put the definition in `packages/app/src/apis.ts`. However, if you need to access your auth API inside plugins you you'll need to -export it from a common package. If you don't already have one we recommended -creating `@internal/apis` and from there export the API reference. +export it from a common package. If you don't already have one, we recommend +creating `@internal/apis` and from there exporting the API reference. ```ts // `ProfileInfoApi & BackstageIdentityApi & SessionApi` are required for sign-in @@ -101,7 +101,7 @@ export const acmeAuthApiRef: ApiRef< }); ``` -Next you'll want to wire up the API inside `packages/app/src/apis.ts`, which +Next, you'll want to wire up the API inside `packages/app/src/apis.ts`, which varies depending on which API you're replacing. If you for example are replacing the `oauth2ApiRef`, the factory might look like this: diff --git a/docs/api/utility-apis.md b/docs/api/utility-apis.md index 5df8fc334a..06183f1fc0 100644 --- a/docs/api/utility-apis.md +++ b/docs/api/utility-apis.md @@ -166,10 +166,10 @@ the final say in what APIs will be loaded at runtime? The app may override the factories for any of the core or plugin APIs, with the exception of the config, app theme, and identity APIs. These are static APIs that are tied into the [`createApp`](../reference/app-defaults.createapp.md) implementation and -therefore not possible to override. +therefore, not possible to override. Overriding APIs is useful for apps that want to switch out behavior to tailor it -to their environment. In some cases plugins, may also export multiple +to their environment. In some cases, plugins may also export multiple implementations of the same API, where they each have their own different requirements, for example, backend storage and the surrounding environment. diff --git a/docs/architecture-decisions/index.md b/docs/architecture-decisions/index.md index 615d737fe1..3432264453 100644 --- a/docs/architecture-decisions/index.md +++ b/docs/architecture-decisions/index.md @@ -27,7 +27,7 @@ Records should be stored under the `architecture-decisions` directory. - Address and integrate feedback from the community - Eventually, assign a number - Add the path of the ADR to the microsite sidebar in - [`sidebars.json`](https://github.com/backstage/backstage/blob/master/microsite/sidebars.json) + [`sidebars.js`](https://github.com/backstage/backstage/blob/master/microsite/sidebars.js) - Add the path of the ADR to the [`mkdocs.yml`](https://github.com/backstage/backstage/blob/master/mkdocs.yml) - Merge the pull request diff --git a/docs/auth/add-auth-provider.md b/docs/auth/add-auth-provider.md index 8ea8a4ffc0..51424f1c10 100644 --- a/docs/auth/add-auth-provider.md +++ b/docs/auth/add-auth-provider.md @@ -244,7 +244,7 @@ export const providerAuthenticator = createOAuthAuthenticator({ Here are some examples of authenticators that are already implemented in the codebase: - [Google](https://github.com/backstage/backstage/blob/master/plugins/auth-backend-module-google-provider/src/authenticator.ts) -- [Github](https://github.com/backstage/backstage/blob/master/plugins/auth-backend-module-github-provider/src/authenticator.ts) +- [GitHub](https://github.com/backstage/backstage/blob/master/plugins/auth-backend-module-github-provider/src/authenticator.ts) - [Okta](https://github.com/backstage/backstage/blob/master/plugins/auth-backend-module-okta-provider/src/authenticator.ts) ### Creating proxy auth based provider diff --git a/docs/auth/atlassian/provider.md b/docs/auth/atlassian/provider.md index 96271f04a0..f4793d4f51 100644 --- a/docs/auth/atlassian/provider.md +++ b/docs/auth/atlassian/provider.md @@ -49,9 +49,7 @@ auth: scope: ${AUTH_ATLASSIAN_SCOPES} signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName + # See https://backstage.io/docs/auth/atlassian/provider#resolvers for more resolvers - resolver: usernameMatchingUserEntityName ``` diff --git a/docs/auth/auth0/provider--old.md b/docs/auth/auth0/provider--old.md new file mode 100644 index 0000000000..a089236aca --- /dev/null +++ b/docs/auth/auth0/provider--old.md @@ -0,0 +1,75 @@ +--- +id: provider--old +title: Auth0 Authentication Provider +sidebar_label: Auth0 +description: Adding Auth0 as an authentication provider in Backstage +--- + +:::info +This documentation is written for the old backend which has been replaced by +[the new backend system](../../backend-system/index.md), being the default since +Backstage [version 1.24](../../releases/v1.24.0.md). If have migrated to the new +backend system, you may want to read [its own article](./provider.md) +instead. Otherwise, [consider migrating](../../backend-system/building-backends/08-migrating.md)! +::: + +The Backstage `core-plugin-api` package comes with an Auth0 authentication +provider that can authenticate users using OAuth. + +## Create an Auth0 Application + +1. Log in to the [Auth0 dashboard](https://manage.auth0.com/dashboard/) +2. Navigate to **Applications** +3. Create an Application + - Name: Backstage (or your custom app name) + - Application type: Single Page Web Application +4. Click on the Settings tab +5. Add under `Application URIs` > `Allowed Callback URLs`: + `http://localhost:7007/api/auth/auth0/handler/frame` +6. Click `Save Changes` + +## Configuration + +The provider configuration can then be added to your `app-config.yaml` under the +root `auth` configuration: + +```yaml +auth: + environment: development + providers: + auth0: + development: + clientId: ${AUTH_AUTH0_CLIENT_ID} + clientSecret: ${AUTH_AUTH0_CLIENT_SECRET} + domain: ${AUTH_AUTH0_DOMAIN_ID} + audience: ${AUTH_AUTH0_AUDIENCE} + connection: ${AUTH_AUTH0_CONNECTION} + connectionScope: ${AUTH_AUTH0_CONNECTION_SCOPE} + session: + secret: ${AUTH_SESSION_SECRET} +``` + +The Auth0 provider is a structure with these configuration keys: + +- `clientId`: The Application client ID, found on the Auth0 Application page +- `clientSecret`: The Application client secret, found on the Auth0 Application + page +- `domain`: The Application domain, found on the Auth0 Application page + +It additionally relies on the following configuration to function: + +- `session.secret`: The session secret is a key used for signing and/or encrypting cookies set by the application to maintain session state. In this case, 'your session secret' should be replaced with a long, complex, and unique string that only your application knows. + +Auth0 requires a session, so you need to give the session a secret key. + +## Optional Configuration + +- `audience`: The intended recipients of the token +- `connection`: Social identity provider name. To check the available social connections, please visit [Auth0 Social Connections](https://marketplace.auth0.com/features/social-connections). +- `connectionScope`: Additional scopes in the interactive token request. It should always be used in combination with the `connection` parameter + +## Adding the provider to the Backstage frontend + +To add the provider to the frontend, add the `auth0AuthApi` reference and +`SignInPage` component as shown in +[Adding the provider to the sign-in page](../index.md#sign-in-configuration). diff --git a/docs/auth/auth0/provider.md b/docs/auth/auth0/provider.md index ae44114906..bc2a02fe1f 100644 --- a/docs/auth/auth0/provider.md +++ b/docs/auth/auth0/provider.md @@ -5,6 +5,13 @@ sidebar_label: Auth0 description: Adding Auth0 as an authentication provider in Backstage --- +:::info +This documentation is written for [the new backend system](../../backend-system/index.md) which is the default since Backstage +[version 1.24](../../releases/v1.24.0.md). If you are still on the old backend +system, you may want to read [its own article](./provider--old.md) +instead, and [consider migrating](../../backend-system/building-backends/08-migrating.md)! +::: + The Backstage `core-plugin-api` package comes with an Auth0 authentication provider that can authenticate users using OAuth. @@ -54,12 +61,46 @@ It additionally relies on the following configuration to function: Auth0 requires a session, so you need to give the session a secret key. -## Optional Configuration +### Optional - `audience`: The intended recipients of the token - `connection`: Social identity provider name. To check the available social connections, please visit [Auth0 Social Connections](https://marketplace.auth0.com/features/social-connections). - `connectionScope`: Additional scopes in the interactive token request. It should always be used in combination with the `connection` parameter +### Resolvers + +This provider includes several resolvers out of the box that you can use: + +- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. +- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. + +:::note Note + +The resolvers will be tried in order, but will only be skipped if they throw a `NotFoundError`. + +::: + +If these resolvers do not fit your needs you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. + +## Backend Installation + +To add the provider to the backend we will first need to install the package by running this command: + +```bash title="from your Backstage root directory" +yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-auth0-provider +``` + +Then we will need to add this line: + +```ts title="packages/backend/src/index.ts" +import { createBackend } from '@backstage/backend-defaults'; +//... +backend.add(import('@backstage/plugin-auth-backend')); +// highlight-add-next-line +backend.add(import('@backstage/plugin-auth-backend-module-auth0-provider')); +//... +``` + ## Adding the provider to the Backstage frontend To add the provider to the frontend, add the `auth0AuthApi` reference and diff --git a/docs/auth/aws-alb/provider.md b/docs/auth/aws-alb/provider.md index a3974c895e..8ce1eba5ab 100644 --- a/docs/auth/aws-alb/provider.md +++ b/docs/auth/aws-alb/provider.md @@ -25,9 +25,8 @@ auth: region: 'us-west-2' signIn: resolvers: - # typically you would pick one of these + # See https://backstage.io/docs/auth/aws-alb/provider#resolvers for more resolvers - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName ``` Ensure that you have set the signer correctly. It is also recommended that you restrict your target groups' security policy to only accept connections from that ALB. diff --git a/docs/auth/bitbucket/provider.md b/docs/auth/bitbucket/provider.md index 1ca35437ba..e58ad622fc 100644 --- a/docs/auth/bitbucket/provider.md +++ b/docs/auth/bitbucket/provider.md @@ -39,11 +39,8 @@ auth: clientSecret: ${AUTH_BITBUCKET_CLIENT_SECRET} signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName + # See https://backstage.io/docs/auth/bitbucket/provider#resolvers for more resolvers - resolver: userIdMatchingUserEntityAnnotation - - resolver: usernameMatchingUserEntityAnnotation ``` The Bitbucket provider is a structure with two configuration keys: diff --git a/docs/auth/bitbucketServer/provider--old.md b/docs/auth/bitbucketServer/provider--old.md new file mode 100644 index 0000000000..fdd8fa35be --- /dev/null +++ b/docs/auth/bitbucketServer/provider--old.md @@ -0,0 +1,60 @@ +--- +id: provider--od +title: Bitbucket Server Authentication Provider +sidebar_label: Bitbucket Server +description: Adding Bitbucket Server OAuth as an authentication provider in Backstage +--- + +:::info +This documentation is written for the old backend which has been replaced by +[the new backend system](../../backend-system/index.md), being the default since +Backstage [version 1.24](../../releases/v1.24.0.md). If have migrated to the new +backend system, you may want to read [its own article](./provider.md) +instead. Otherwise, [consider migrating](../../backend-system/building-backends/08-migrating.md)! +::: + +The Backstage `core-plugin-api` package comes with a Bitbucket Server authentication provider that can authenticate +users using Bitbucket Server. This does **NOT** work with Bitbucket Cloud. + +## Create an Application Link in Bitbucket Server + +To add Bitbucket Server authentication, you must create an incoming application link. Follow the steps described in +the [Bitbucket Server documentation](https://confluence.atlassian.com/bitbucketserver/configure-an-incoming-link-1108483657.html) +to create one. + +## Configuration + +The provider configuration can then be added to your `app-config.yaml` under the root `auth` configuration: + +```yaml +auth: + environment: development + providers: + bitbucketServer: + development: + host: bitbucket.org + clientId: ${AUTH_BITBUCKET_SERVER_CLIENT_ID} + clientSecret: ${AUTH_BITBUCKET_SERVER_CLIENT_SECRET} +``` + +The Bitbucket Server provider is a structure with two configuration keys: + +- `clientId`: The client ID that was generated by Bitbucket, e.g. `b0f868455c15dcdff5c5fb5d173ae684`. +- `clientSecret`: The client secret tied to the generated client ID. + +## Adding the provider to the Backstage frontend + +To add the provider to the frontend, add the `bitbucketServerAuthApi` reference and `SignInPage` component as shown +in [Adding the provider to the sign-in page](../index.md#sign-in-configuration). + +## Using Bitbucket Server for sign-in + +In order to use the Bitbucket Server provider for sign-in, you must configure it with a `signIn.resolver`. See +the [Sign-In Resolver documentation](../identity-resolver.md) for more details on how this is done. Note that for the +Bitbucket Server provider, you'll want to use `bitbucketServer` as the provider ID, +and `providers.bitbucketServer.create` for the provider factory. + +The `@backstage/plugin-auth-backend` plugin also comes with a built-in resolver that can be used if desired. +The `emailMatchingUserEntityProfileEmail` identifies users by matching their Bitbucket Server email address to the email +address of `User` entities in the catalog. Note that you must populate your catalog with matching entities or users will +not be able to sign in with this resolver. diff --git a/docs/auth/bitbucketServer/provider.md b/docs/auth/bitbucketServer/provider.md index 82aebc20b2..c41457d09c 100644 --- a/docs/auth/bitbucketServer/provider.md +++ b/docs/auth/bitbucketServer/provider.md @@ -5,6 +5,13 @@ sidebar_label: Bitbucket Server description: Adding Bitbucket Server OAuth as an authentication provider in Backstage --- +:::info +This documentation is written for [the new backend system](../../backend-system/index.md) which is the default since Backstage +[version 1.24](../../releases/v1.24.0.md). If you are still on the old backend +system, you may want to read [its own article](./provider--old.md) +instead, and [consider migrating](../../backend-system/building-backends/08-migrating.md)! +::: + The Backstage `core-plugin-api` package comes with a Bitbucket Server authentication provider that can authenticate users using Bitbucket Server. This does **NOT** work with Bitbucket Cloud. @@ -24,7 +31,7 @@ auth: providers: bitbucketServer: development: - host: bitbucket.org + host: bitbucket.example.org clientId: ${AUTH_BITBUCKET_SERVER_CLIENT_ID} clientSecret: ${AUTH_BITBUCKET_SERVER_CLIENT_SECRET} ``` @@ -34,19 +41,50 @@ The Bitbucket Server provider is a structure with two configuration keys: - `clientId`: The client ID that was generated by Bitbucket, e.g. `b0f868455c15dcdff5c5fb5d173ae684`. - `clientSecret`: The client secret tied to the generated client ID. -## Adding the provider to the Backstage frontend +### Resolvers -To add the provider to the frontend, add the `bitbucketServerAuthApi` reference and `SignInPage` component as shown -in [Adding the provider to the sign-in page](../index.md#sign-in-configuration). +This provider includes several resolvers out of the box that you can use: -## Using Bitbucket Server for sign-in +- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. +- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. -In order to use the Bitbucket Server provider for sign-in, you must configure it with a `signIn.resolver`. See -the [Sign-In Resolver documentation](../identity-resolver.md) for more details on how this is done. Note that for the -Bitbucket Server provider, you'll want to use `bitbucketServer` as the provider ID, -and `providers.bitbucketServer.create` for the provider factory. +:::note Note -The `@backstage/plugin-auth-backend` plugin also comes with a built-in resolver that can be used if desired. -The `emailMatchingUserEntityProfileEmail` identifies users by matching their Bitbucket Server email address to the email -address of `User` entities in the catalog. Note that you must populate your catalog with matching entities or users will -not be able to sign in with this resolver. +The resolvers will be tried in order, but will only be skipped if they throw a `NotFoundError`. + +::: + +If these resolvers do not fit your needs you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. + +## Backend Installation + +To add the provider to the backend we will first need to install the package by running this command: + +```bash title="from your Backstage root directory" +yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-bitbucket-server-provider +``` + +Then we will need to add this line: + +```ts title="packages/backend/src/index.ts" +//... +backend.add(import('@backstage/plugin-auth-backend')); +// highlight-add-start +backend.add( + import('@backstage/plugin-auth-backend-module-bitbucket-server-provider'), +); +// highlight-add-end +//... +``` + +## Frontend Configuration + +### Sign-in + +To add the provider to the frontend, add the `bitbucketServerAuthApiRef` reference and +`SignInPage` component as shown in +[Adding the provider to the sign-in page](../index.md#sign-in-configuration). + +### ScmAuth + +For backstage to be able to use the oauth token of the logged in user to access the Bitbucket Server API, you need to add it to list of ScmAuth providers as shown in [Custom ScmAuthApi Implementation](../index.md#custom-scmauthapi-implementation) using the `ScmAuth.forBitbucketServer` method. diff --git a/docs/auth/cloudflare/provider.md b/docs/auth/cloudflare/provider.md index a1946580a7..224a64f056 100644 --- a/docs/auth/cloudflare/provider.md +++ b/docs/auth/cloudflare/provider.md @@ -41,8 +41,8 @@ auth: # This picks what sign in resolver(s) you want to use. signIn: resolvers: + # See https://backstage.io/docs/auth/cloudflare/provider#resolvers for more resolvers - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName ``` This config section must be in place for the provider to load at all. diff --git a/docs/auth/github/provider.md b/docs/auth/github/provider.md index 76b63c6617..3b61815017 100644 --- a/docs/auth/github/provider.md +++ b/docs/auth/github/provider.md @@ -51,8 +51,7 @@ auth: # enterpriseInstanceUrl: ${AUTH_GITHUB_ENTERPRISE_INSTANCE_URL} signIn: resolvers: - # Matches the GitHub username with the Backstage user entity name. - # See https://backstage.io/docs/auth/github/provider#resolvers for more resolvers. + # See https://backstage.io/docs/auth/github/provider#resolvers for more resolvers - resolver: usernameMatchingUserEntityName ``` diff --git a/docs/auth/gitlab/provider.md b/docs/auth/gitlab/provider.md index 73546411bf..5241481463 100644 --- a/docs/auth/gitlab/provider.md +++ b/docs/auth/gitlab/provider.md @@ -19,6 +19,7 @@ should point to your Backstage backend auth handler. 1. Set this to `http://localhost:7007/api/auth/gitlab/handler/frame` for local development. 2. Set this to `http://{APP_FQDN}:{APP_BACKEND_PORT}/api/auth/gitlab/handler/frame` for non-local deployments. 3. Select the following scopes from the list: + - [x] `api` Grants full read-write access to the api. This is only required if users need to be able to create merge requests with their own permissions. - [x] `read_user` Grants read-only access to the authenticated user's profile through the /user API endpoint, which includes username, public email, and full name. Also grants access to read-only API endpoints under /users. - [x] `read_repository` Grants read-only access to repositories on private projects using Git-over-HTTP (not using the API). - [x] `write_repository` Grants read-write access to repositories on private projects using Git-over-HTTP (not using the API). @@ -45,9 +46,7 @@ auth: # callbackUrl: https://${BASE_URL}/api/auth/gitlab/handler/frame signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName + # See https://backstage.io/docs/auth/gitlab/provider#resolvers for more resolvers - resolver: usernameMatchingUserEntityName ``` diff --git a/docs/auth/google/gcp-iap-auth.md b/docs/auth/google/gcp-iap-auth.md index 298f212399..6fe8b56d9e 100644 --- a/docs/auth/google/gcp-iap-auth.md +++ b/docs/auth/google/gcp-iap-auth.md @@ -29,9 +29,7 @@ auth: jwtHeader: x-custom-header # Optional: Only if you are using a custom header for the IAP JWT signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName + # See https://backstage.io/docs/auth/google/gcp-iap-auth#resolvers for more resolvers - resolver: emailMatchingUserEntityAnnotation ``` diff --git a/docs/auth/google/provider.md b/docs/auth/google/provider.md index b19d21d63f..109c2ddd9f 100644 --- a/docs/auth/google/provider.md +++ b/docs/auth/google/provider.md @@ -44,9 +44,7 @@ auth: clientSecret: ${AUTH_GOOGLE_CLIENT_SECRET} signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName + # See https://backstage.io/docs/auth/google/provider#resolvers for more resolvers - resolver: emailMatchingUserEntityAnnotation ``` diff --git a/docs/auth/identity-resolver.md b/docs/auth/identity-resolver.md index dbebf3056c..293300f429 100644 --- a/docs/auth/identity-resolver.md +++ b/docs/auth/identity-resolver.md @@ -70,6 +70,14 @@ always be full entity references, as opposed to shorthands like just `jane` or ## Sign-in Resolvers +:::warning +Be careful when configuring Sign-in resolvers, as they are part of determining who +has access to your Backstage instance, and with what identity. Always only configure +**a single sign-in resolver for one of your auth providers**. The only reason to have +more sign-in resolvers is if you want to allow your users to sign in to Backstage in +multiple ways, but it increases the risk of account hijacking. +::: + Signing in a user into Backstage requires a mapping of the user identity from the third-party auth provider to a Backstage user identity. This mapping can vary quite a lot between different organizations and auth providers, and because of that there's @@ -112,19 +120,38 @@ auth: signIn: resolvers: - resolver: usernameMatchingUserEntityName - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName ``` -Note that in this instance it lists several resolvers, which means that the -framework will try them one by one until one succeeds. If none of them do, the -sign in attempt is rejected. - The list of available resolvers is different for each provider, since they often depend on the information model returned from the upstream provider service. Consult the documentation of the respective provider to find the list. -In the example above `emailMatchingUserEntityProfileEmail` and `emailLocalPartMatchingUserEntityName` are common to all auth providers and `usernameMatchingUserEntityName` is specific to GitHub. +In the example above, the `usernameMatchingUserEntityName` is specific to the +GitHub provider, but you could also choose to use the +`emailMatchingUserEntityProfileEmail` or `emailLocalPartMatchingUserEntityName` +resolvers, which are common to all auth providers. + +:::warning +When using the `emailLocalPartMatchingUserEntityName` resolver it is strongly +recommended to set the `allowedDomains` option to ensure that only authorized users +are able to sign-in. +::: + +If you are using the `emailLocalPartMatchingUserEntityName` resolver, it is +recommended to also set the `allowedDomains` option, for example: + +```yaml title="Within the provider configuration" +auth: + providers: + github: + development: + ... + signIn: + resolvers: + - resolver: emailLocalPartMatchingUserEntityName + allowedDomains: + - acme.org +``` ### Building Custom Resolvers @@ -142,8 +169,26 @@ backend.add(import('@backstage/plugin-auth-backend-module-github-provider')); When you want to supply a custom sign-in resolver, as a general pattern you remove that last import and instead construct your own provider using the -facilities from the same package. You can leave the config unchanged from -before. +facilities from the same package. + +Make sure that your `auth` config in your `app-config.yaml` does not contain +any `resolvers` field - otherwise, they take priority. + +```yaml title="in e.g. app-config.yaml" +auth: + environment: development + providers: + github: + development: + clientId: ${AUTH_GITHUB_CLIENT_ID} + clientSecret: ${AUTH_GITHUB_CLIENT_SECRET} + enterpriseInstanceUrl: ${AUTH_GITHUB_ENTERPRISE_INSTANCE_URL} +/* highlight-remove-start */ + signIn: + resolvers: + - resolver: usernameMatchingUserEntityName +/* highlight-remove-end */ +``` ```ts title="in packages/backend/src/index.ts" /* highlight-add-start */ @@ -298,6 +343,12 @@ async signInResolver({ profile: { email} }, ctx) { ### Sign-In without Users in the Catalog +:::warning +Signing in users without verifying that they exist in the catalog can be +dangerous. Take care to ensure that your custom resolvers only allow expected +users to sign in, for example by checking email domains. +::: + While populating the catalog with organizational data unlocks more powerful ways to browse your software ecosystem, it might not always be a viable or prioritized option. However, even if you do not have user entities populated in your catalog, you diff --git a/docs/auth/index.md b/docs/auth/index.md index de579d039a..2384943c52 100644 --- a/docs/auth/index.md +++ b/docs/auth/index.md @@ -36,8 +36,7 @@ Backstage comes with many common authentication providers in the core library: - [OneLogin](onelogin/provider.md) - [VMware Cloud](vmware-cloud/provider.md) -These built-in providers handle the authentication flow for a particular service -including required scopes, callbacks, etc. These providers are each added to a +These built-in providers handle the authentication flow for a particular service, including required scopes, callbacks, etc. These providers are each added to a Backstage app in a similar way. ## Configuring Authentication Providers @@ -58,7 +57,7 @@ auth: See the documentation for a particular provider to see what configuration is needed. -The `providers` key may have several authentication providers, if multiple +The `providers` key may have several authentication providers if multiple authentication methods are supported. Each provider may also have configuration for different authentication environments (development, production, etc). This allows a single auth backend to serve multiple environments, such as running a @@ -68,15 +67,14 @@ the local `auth.environment` setting will be selected. ## Sign-In Configuration Using an authentication provider for sign-in is something you need to configure -both in the frontend app, as well as the `auth` backend plugin. For information +both in the frontend app as well as the `auth` backend plugin. For information on how to configure the backend app, see [Sign-in Identities and Resolvers](./identity-resolver.md). The rest of this section will focus on how to configure sign-in for the frontend app. Sign-in is configured by providing a custom `SignInPage` app component. It will be rendered before any other routes in the app and is responsible for providing the identity of the current user. The `SignInPage` can render any number of pages and -components, or just blank space with logic running in the background. In the end -however it must provide a valid Backstage user identity through the `onSignInSuccess` +components, or just blank space with logic running in the background. In the end, however, it must provide a valid Backstage user identity through the `onSignInSuccess` callback prop, at which point the rest of the app is rendered. If you want to, you can use the `SignInPage` component that is provided by `@backstage/core-components`, @@ -149,7 +147,7 @@ const app = createApp({ ### Conditionally Render Sign In Provider -In the above example you have both Guest and GitHub sign-in options, this is helpful for non-production but in Production you will most likely not want to offer Guest access. You can easily use information from your config to help conditionally render the provider: +In the above example, you have both Guest and GitHub sign-in options; this is helpful for non-production, but in Production you will most likely not want to offer Guest access. You can easily use information from your config to help conditionally render the provider: ```tsx title="packages/app/src/App.tsx" import { @@ -207,7 +205,7 @@ and [OAuth2 Proxy](./oauth2-proxy/provider.md). When using a proxy provider, you'll end up wanting to use a different sign-in page, as there is no need for further user interaction once you've signed in towards the proxy. -All the sign-in page needs to do is to call the `/refresh` endpoint of the auth providers +All the sign-in page needs to do is call the `/refresh` endpoint of the auth providers to get the existing session, which is exactly what the `ProxiedSignInPage` does. The only thing you need to do to configure the `ProxiedSignInPage` is to pass the ID of the provider like this: @@ -250,7 +248,7 @@ Headers can also be returned in an async manner: A downside of this method is that it can be cumbersome to set up for local development. As a workaround for this, it's possible to dynamically select the sign-in page based on -what environment the app is running in, and then use a different sign-in method for local +what environment the app is running in and then use a different sign-in method for local development, if one is needed at all. Depending on the exact setup, one might choose to select the sign-in method based on the `process.env.NODE_ENV` environment variable, by checking the `hostname` of the current location, or by accessing the configuration API @@ -286,7 +284,7 @@ sign-in resolvers so that they resolve to the same identity regardless of the me ## Scaffolder Configuration (Software Templates) -If you want to use the authentication capabilities of the [Repository Picker](../features/software-templates/writing-templates.md#the-repository-picker) inside your software templates you will need to configure the [`ScmAuthApi`](https://backstage.io/docs/reference/integration-react.scmauthapi) alongside your authentication provider. It is an API used to authenticate towards different SCM systems in a generic way, based on what resource is being accessed. +If you want to use the authentication capabilities of the [Repository Picker](../features/software-templates/writing-templates.md#the-repository-picker) inside your software templates, you will need to configure the [`ScmAuthApi`](https://backstage.io/docs/reference/integration-react.scmauthapi) alongside your authentication provider. It is an API used to authenticate towards different SCM systems in a generic way, based on what resource is being accessed. To set it up, you'll need to add an API factory entry to `packages/app/src/apis.ts`. The example below sets up the `ScmAuthApi` for an already configured GitLab authentication provider: @@ -305,7 +303,7 @@ In case you are using a custom authentication providers, you might need to add a ## For Plugin Developers The Backstage frontend core APIs provide a set of Utility APIs for plugin developers -to use, both to access the user identity, as well as third party resources. +to use, both to access the user identity as well as third-party resources. ### Identity for Plugin Developers @@ -323,21 +321,21 @@ to interact directly with the `IdentityApi`. ### Accessing Third Party Resources -A common pattern for talking to third party services in Backstage is +A common pattern for talking to third-party services in Backstage is user-to-server requests, where short-lived OAuth Access Tokens are requested by plugins to authenticate calls to external services. These calls can be made either directly to the services or through a backend plugin or service. -By relying on user-to-server calls we keep the coupling between the frontend and -backend low, and provide a much lower barrier for plugins to make use of third -party services. This is in comparison to for example a session-based system, +By relying on user-to-server calls, we keep the coupling between the frontend and +backend low and provide a much lower barrier for plugins to make use of third +party services. This is in comparison to, for example, a session-based system where access tokens are stored server-side. Such a solution would require a much deeper coupling between the auth backend plugin, its session storage, and other backend plugins or separate services. A goal of Backstage is to make it as easy as possible to create new plugins, and an auth solution based on user-to-server OAuth helps in that regard. -The method with which frontend plugins request access to third party services is +The method with which frontend plugins request access to third-party services is through [Utility APIs](../api/utility-apis.md) for each service provider. These are all suffixed with `*AuthApiRef`, for example `githubAuthApiRef`. For a full list of providers, see the diff --git a/docs/auth/microsoft/azure-easyauth.md b/docs/auth/microsoft/azure-easyauth.md index c2a6eab218..52c61a0d86 100644 --- a/docs/auth/microsoft/azure-easyauth.md +++ b/docs/auth/microsoft/azure-easyauth.md @@ -66,9 +66,7 @@ auth: azureEasyAuth: signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName + # See https://backstage.io/docs/auth/microsoft/easy-auth#resolvers for more resolvers - resolver: idMatchingUserEntityAnnotation ``` diff --git a/docs/auth/microsoft/provider.md b/docs/auth/microsoft/provider.md index 60104b99b7..74416f853e 100644 --- a/docs/auth/microsoft/provider.md +++ b/docs/auth/microsoft/provider.md @@ -69,10 +69,8 @@ auth: domainHint: ${AZURE_TENANT_ID} signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName - - resolver: emailMatchingUserEntityAnnotation + # See https://backstage.io/docs/auth/microsoft/provider#resolvers for more resolvers + - resolver: userIdMatchingUserEntityAnnotation ``` The Microsoft provider is a structure with three mandatory configuration keys: @@ -85,6 +83,7 @@ The Microsoft provider is a structure with three mandatory configuration keys: When specified, this reduces login friction for users with accounts in multiple tenants by automatically filtering away accounts from other tenants. For more details, see [Home Realm Discovery](https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/home-realm-discovery-policy) - `additionalScopes` (optional): List of scopes for the App Registration, to be requested in addition to the required ones. +- `skipUserProfile` (optional): If true, skips loading the user profile even if the `User.Read` scope is present. This is a performance optimization during login and can be used with resolvers that only needs the email address in `spec.profile.email` obtained when the `email` OAuth2 scope is present. ### Resolvers @@ -93,6 +92,7 @@ This provider includes several resolvers out of the box that you can use: - `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. - `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. - `emailMatchingUserEntityAnnotation`: Matches the email address from the auth provider with the User entity where the value of the `microsoft.com/email` annotation matches. If no match is found it will throw a `NotFoundError`. +- `userIdMatchingUserEntityAnnotation`: Matches the user profile ID from the auth provider with the User entity where the value of the `graph.microsoft.com/user-id` annotation matches. This resolver is recommended to resolve users without an email in their profile. If no match is found it will throw a `NotFoundError`. :::note Note diff --git a/docs/auth/oauth2-proxy/provider.md b/docs/auth/oauth2-proxy/provider.md index 0901685b2f..2fa027e0ad 100644 --- a/docs/auth/oauth2-proxy/provider.md +++ b/docs/auth/oauth2-proxy/provider.md @@ -13,6 +13,12 @@ a cluster. In general the `oauth2-proxy` supports all OpenID Connect providers, for more details check this [list of supported providers](https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/oauth_provider). +:::note Note + +OAuth2 Proxy does not provide a way to authenticate requests, you must instead ensure that your Backstage instance is only accessible through the OAuth2 Proxy. If you need more strict validation, consider using a different provider. + +::: + ## Configuration The provider configuration can be added to your `app-config.yaml` under the root @@ -25,9 +31,7 @@ auth: oauth2Proxy: signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName + # See https://backstage.io/docs/auth/oauth2-proxy/provider#resolvers for more resolvers - resolver: forwardedUserMatchingUserEntityName ``` diff --git a/docs/auth/oidc.md b/docs/auth/oidc.md index 64da189fae..6d2a937320 100644 --- a/docs/auth/oidc.md +++ b/docs/auth/oidc.md @@ -20,7 +20,7 @@ to your provider name. ## Summary To add providers not enabled by default like OIDC, we need to follow some steps, we -assume you already have a sign in page to which we'll add the provider so users can +assume you already have a sign-in page to which we'll add the provider so users can sign in through the provider. In simple steps here's how you enable the provider: - Create an API reference to identify the provider. @@ -156,8 +156,6 @@ auth: # ... signIn: resolvers: - # typically you would pick one of these - - resolver: emailLocalPartMatchingUserEntityName - resolver: emailMatchingUserEntityProfileEmail ``` diff --git a/docs/auth/okta/provider.md b/docs/auth/okta/provider.md index 83352aaa0d..abc6231839 100644 --- a/docs/auth/okta/provider.md +++ b/docs/auth/okta/provider.md @@ -49,9 +49,7 @@ auth: additionalScopes: ${AUTH_OKTA_ADDITIONAL_SCOPES} # Optional signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName + # See https://backstage.io/docs/auth/okta/provider#resolvers for more resolvers - resolver: emailMatchingUserEntityAnnotation ``` diff --git a/docs/auth/onelogin/provider.md b/docs/auth/onelogin/provider.md index 002445a9d1..edceb1de62 100644 --- a/docs/auth/onelogin/provider.md +++ b/docs/auth/onelogin/provider.md @@ -40,9 +40,7 @@ auth: issuer: https://.onelogin.com/oidc/2 signIn: resolvers: - # typically you would pick one of these - - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName + # See https://backstage.io/docs/auth/onelogin/provider#resolvers for more resolvers - resolver: usernameMatchingUserEntityName ``` diff --git a/docs/auth/vmware-cloud/provider.md b/docs/auth/vmware-cloud/provider.md index ac2cf3ee92..d654331178 100644 --- a/docs/auth/vmware-cloud/provider.md +++ b/docs/auth/vmware-cloud/provider.md @@ -49,10 +49,8 @@ auth: organizationId: ${ORG_ID} signIn: resolvers: - # typically you would pick one of these + # See https://backstage.io/docs/auth/vmware-cloud/provider#resolvers for more resolvers - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName - - resolver: vmwareCloudSignInResolvers ``` Where `APP_ID` refers to the ID retrieved when creating the OAuth App, and @@ -76,7 +74,6 @@ This provider includes several resolvers out of the box that you can use: - `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. - `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. -- `vmwareCloudSignInResolvers`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will sign in the user without associating with a catalog user. :::note Note diff --git a/docs/backend-system/architecture/02-backends.md b/docs/backend-system/architecture/02-backends.md index 3386cff3f7..1310453a3f 100644 --- a/docs/backend-system/architecture/02-backends.md +++ b/docs/backend-system/architecture/02-backends.md @@ -21,10 +21,10 @@ import scaffolderPlugin from '@backstage/plugin-scaffolder-backend'; const backend = createBackend(); // Install desired features -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); // Features can also be installed using an explicit reference -backend.add(scaffolderPlugin()); +backend.add(scaffolderPlugin); // Start up the backend backend.start(); diff --git a/docs/backend-system/architecture/03-services.md b/docs/backend-system/architecture/03-services.md index 57f6b20b73..ad437e471e 100644 --- a/docs/backend-system/architecture/03-services.md +++ b/docs/backend-system/architecture/03-services.md @@ -197,7 +197,7 @@ When declaring a service factory you may also want to make the export the buildi ```ts export class DefaultFooService { static create(options: { transform: (foo: string) => string }) { - return new DefaultFooService(options.transform ?? (foo) => foo); + return new DefaultFooService(options.transform ?? ((foo) => foo); } private constructor(private readonly transform: (foo: string) => string) {} diff --git a/docs/backend-system/architecture/04-plugins.md b/docs/backend-system/architecture/04-plugins.md index 5aef71e24f..f2a6b856b9 100644 --- a/docs/backend-system/architecture/04-plugins.md +++ b/docs/backend-system/architecture/04-plugins.md @@ -41,7 +41,7 @@ The `createBackendPlugin` return value is exported as `examplePlugin`, which is ```ts import { examplePlugin } from 'backstage-plugin-example-backend'; -backend.add(examplePlugin()); +backend.add(examplePlugin); ``` By convention every plugin package should export its plugin instance as the default export from the package: diff --git a/docs/backend-system/architecture/07-feature-loaders.md b/docs/backend-system/architecture/07-feature-loaders.md index cf52a1feb3..43954ec443 100644 --- a/docs/backend-system/architecture/07-feature-loaders.md +++ b/docs/backend-system/architecture/07-feature-loaders.md @@ -24,10 +24,10 @@ A feature loader can simply return a list of features to be installed: export default createBackendFeatureLoader({ loader() { return [ - import('@backstage/plugin-search-backend/alpha'), - import('@backstage/plugin-search-backend-module-catalog/alpha'), - import('@backstage/plugin-search-backend-module-explore/alpha'), - import('@backstage/plugin-search-backend-module-techdocs/alpha'), + import('@backstage/plugin-search-backend'), + import('@backstage/plugin-search-backend-module-catalog'), + import('@backstage/plugin-search-backend-module-explore'), + import('@backstage/plugin-search-backend-module-techdocs'), ]; }, }); @@ -64,10 +64,10 @@ export default createBackendFeatureLoader({ *loader({ config }) { // Example of a custom config flag to enable search if (config.getOptionalString('customFeatureToggle.search')) { - yield import('@backstage/plugin-search-backend/alpha'); - yield import('@backstage/plugin-search-backend-module-catalog/alpha'); - yield import('@backstage/plugin-search-backend-module-explore/alpha'); - yield import('@backstage/plugin-search-backend-module-techdocs/alpha'); + yield import('@backstage/plugin-search-backend'); + yield import('@backstage/plugin-search-backend-module-catalog'); + yield import('@backstage/plugin-search-backend-module-explore'); + yield import('@backstage/plugin-search-backend-module-techdocs'); } }, }); @@ -84,16 +84,16 @@ export default createBackendFeatureLoader({ const localMetadata = await readMetadataFromDisk(); if (localMetadata.enableSearch) { - yield import('@backstage/plugin-search-backend/alpha'); - yield import('@backstage/plugin-search-backend-module-catalog/alpha'); + yield import('@backstage/plugin-search-backend'); + yield import('@backstage/plugin-search-backend-module-catalog'); const remoteMetadata = await fetchMetadata(); if (remoteMetadata.enableExplore) { - yield import('@backstage/plugin-search-backend-module-explore/alpha'); + yield import('@backstage/plugin-search-backend-module-explore'); } if (remoteMetadata.enableTechDocs) { - yield import('@backstage/plugin-search-backend-module-techdocs/alpha'); + yield import('@backstage/plugin-search-backend-module-techdocs'); } } }, diff --git a/docs/backend-system/building-backends/01-index.md b/docs/backend-system/building-backends/01-index.md index 2fb89e45af..ec95e57973 100644 --- a/docs/backend-system/building-backends/01-index.md +++ b/docs/backend-system/building-backends/01-index.md @@ -26,9 +26,9 @@ import { createBackend } from '@backstage/backend-defaults'; // Omitted in the e const backend = createBackend(); -backend.add(import('@backstage/plugin-app-backend/alpha')); -backend.add(import('@backstage/plugin-catalog-backend/alpha')); -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +backend.add(import('@backstage/plugin-app-backend')); +backend.add(import('@backstage/plugin-catalog-backend')); +backend.add(import('@backstage/plugin-scaffolder-backend')); backend.add( import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), ); @@ -126,8 +126,8 @@ You can now trim down the `src/index.ts` files to only include the plugins and m ```ts const backend = createBackend(); -backend.add(import('@backstage/plugin-app-backend/alpha')); -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-app-backend')); +backend.add(import('@backstage/plugin-catalog-backend')); backend.add( import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), ); @@ -139,7 +139,7 @@ And `backend-b`, don't forget to clean up dependencies in `package.json` as well ```ts const backend = createBackend(); -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +backend.add(import('@backstage/plugin-scaffolder-backend')); backend.start(); ``` diff --git a/docs/backend-system/building-backends/08-migrating.md b/docs/backend-system/building-backends/08-migrating.md index 67104c7ba9..71cccab784 100644 --- a/docs/backend-system/building-backends/08-migrating.md +++ b/docs/backend-system/building-backends/08-migrating.md @@ -237,7 +237,7 @@ be used in its new form. ```ts title="packages/backend/src/index.ts" const backend = createBackend(); /* highlight-add-next-line */ -backend.add(import('@backstage/plugin-app-backend/alpha')); +backend.add(import('@backstage/plugin-app-backend')); ``` If you need to override the app package name, which otherwise defaults to `"app"`, @@ -252,7 +252,7 @@ A basic installation of the catalog plugin looks as follows. ```ts title="packages/backend/src/index.ts" const backend = createBackend(); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); backend.add( import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), ); @@ -277,9 +277,9 @@ For `AwsS3DiscoveryProcessor`, first migrate to `AwsS3EntityProvider`. To migrate `AwsS3EntityProvider` to the new backend system, add a reference to the `@backstage/plugin-catalog-backend-module-aws` module. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-aws/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-aws')); /* highlight-add-end */ ``` @@ -306,9 +306,9 @@ For `AzureDevOpsDiscoveryProcessor`, first migrate to `AzureDevOpsEntityProvider To migrate `AzureDevOpsEntityProvider` to the new backend system, add a reference to the `@backstage/plugin-catalog-backend-module-azure` module. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-azure/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-azure')); /* highlight-add-end */ ``` @@ -340,11 +340,9 @@ For `BitbucketDiscoveryProcessor`, migrate to `BitbucketCloudEntityProvider` or To migrate `BitbucketCloudEntityProvider` to the new backend system, add a reference to the `@backstage/plugin-catalog-backend-module-bitbucket-cloud` module. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add( - import('@backstage/plugin-catalog-backend-module-bitbucket-cloud/alpha'), -); +backend.add(import('@backstage/plugin-catalog-backend-module-bitbucket-cloud')); /* highlight-add-end */ ``` @@ -367,10 +365,10 @@ catalog: To migrate `BitbucketServerEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-bitbucket-server`. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ backend.add( - import('@backstage/plugin-catalog-backend-module-bitbucket-server/alpha'), + import('@backstage/plugin-catalog-backend-module-bitbucket-server'), ); /* highlight-add-end */ ``` @@ -396,7 +394,7 @@ catalog: To migrate `GkeEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-gcp`. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ backend.add(import('@backstage/plugin-catalog-backend-module-gcp')); /* highlight-add-end */ @@ -409,9 +407,9 @@ Configuration in app-config.yaml remains the same. To migrate `GerritEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-gerrit`. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-gerrit/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-gerrit')); /* highlight-add-end */ ``` @@ -431,21 +429,21 @@ catalog: /* highlight-add-end */ ``` -#### Github +#### GitHub For `GithubDiscoveryProcessor`, `GithubMultiOrgReaderProcessor` and `GithubOrgReaderProcessor`, first migrate to the equivalent Entity Provider. To migrate `GithubEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-github`. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-github/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-github')); /* highlight-add-end */ ``` If you were providing a `schedule` in code, this now needs to be set via configuration. -All other Github configuration in `app-config.yaml` remains the same. +All other GitHub configuration in `app-config.yaml` remains the same. ```yaml title="app-config.yaml" catalog: @@ -463,7 +461,7 @@ catalog: To migrate `GithubMultiOrgEntityProvider` or `GithubOrgEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-github-org`. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ backend.add(import('@backstage/plugin-catalog-backend-module-github-org')); /* highlight-add-end */ @@ -581,9 +579,9 @@ For `MicrosoftGraphOrgReaderProcessor`, first migrate to `MicrosoftGraphOrgEntit To migrate `MicrosoftGraphOrgEntityProvider` to the new backend system, add a reference to `@backstage/plugin-catalog-backend-module-msgraph`. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-msgraph/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-msgraph')); /* highlight-add-end */ ``` @@ -670,12 +668,12 @@ const catalogModuleCustomExtensions = createBackendModule({ /* highlight-add-end */ const backend = createBackend(); -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); backend.add( import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), ); /* highlight-add-next-line */ -backend.add(catalogModuleCustomExtensions()); +backend.add(catalogModuleCustomExtensions); ``` This also requires that you have a dependency on the corresponding node package, @@ -699,7 +697,7 @@ A basic installation of the events plugin looks as follows. ```ts title="packages/backend/src/index.ts" const backend = createBackend(); /* highlight-add-next-line */ -backend.add(import('@backstage/plugin-events-backend/alpha')); +backend.add(import('@backstage/plugin-events-backend')); ``` If you have other customizations made to `plugins/events.ts`, such as adding @@ -760,11 +758,11 @@ const otherPluginModuleCustomExtensions = createBackendModule({ /* highlight-add-end */ const backend = createBackend(); -backend.add(import('@backstage/plugin-events-backend/alpha')); +backend.add(import('@backstage/plugin-events-backend')); /* highlight-add-next-line */ -backend.add(eventsModuleCustomExtensions()); +backend.add(eventsModuleCustomExtensions); /* highlight-add-next-line */ -backend.add(otherPluginModuleCustomExtensions()); +backend.add(otherPluginModuleCustomExtensions); ``` Here we've placed the module directly in the backend index file just to get @@ -780,7 +778,7 @@ A basic installation of the scaffolder plugin looks as follows. ```ts title="packages/backend/src/index.ts" const backend = createBackend(); /* highlight-add-next-line */ -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +backend.add(import('@backstage/plugin-scaffolder-backend')); ``` With the new Backend System version of the Scaffolder plugin, any provider specific actions will need to be installed separately. @@ -788,7 +786,7 @@ For example - GitHub actions are now collected under the `@backstage/plugin-scaf ```ts title="packages/backend/src/index.ts" const backend = createBackend(); -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +backend.add(import('@backstage/plugin-scaffolder-backend')); /* highlight-add-next-line */ backend.add(import('@backstage/plugin-scaffolder-backend-module-github')); @@ -839,9 +837,9 @@ const scaffolderModuleCustomExtensions = createBackendModule({ /* highlight-add-end */ const backend = createBackend(); -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +backend.add(import('@backstage/plugin-scaffolder-backend')); /* highlight-add-next-line */ -backend.add(scaffolderModuleCustomExtensions()); +backend.add(scaffolderModuleCustomExtensions); ``` This also requires that you have a dependency on the corresponding node package, @@ -884,8 +882,6 @@ auth: signIn: resolvers: - resolver: emailMatchingUserEntityProfileEmail - - resolver: emailLocalPartMatchingUserEntityName - - resolver: emailMatchingUserEntityAnnotation ``` :::note Note @@ -1145,7 +1141,7 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-search-backend/alpha')); +backend.add(import('@backstage/plugin-search-backend')); /* highlight-add-end */ ``` @@ -1169,8 +1165,8 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-search-backend/alpha')); -backend.add(import('@backstage/plugin-search-backend-module-pg/alpha')); +backend.add(import('@backstage/plugin-search-backend')); +backend.add(import('@backstage/plugin-search-backend-module-pg')); /* highlight-add-end */ ``` @@ -1184,10 +1180,8 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-search-backend/alpha')); -backend.add( - import('@backstage/plugin-search-backend-module-elasticsearch/alpha'), -); +backend.add(import('@backstage/plugin-search-backend')); +backend.add(import('@backstage/plugin-search-backend-module-elasticsearch')); /* highlight-add-end */ ``` @@ -1205,8 +1199,8 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-search-backend/alpha')); -backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha')); +backend.add(import('@backstage/plugin-search-backend')); +backend.add(import('@backstage/plugin-search-backend-module-catalog')); /* highlight-add-end */ ``` @@ -1220,8 +1214,8 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-search-backend/alpha')); -backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); +backend.add(import('@backstage/plugin-search-backend')); +backend.add(import('@backstage/plugin-search-backend-module-techdocs')); /* highlight-add-end */ ``` @@ -1235,7 +1229,7 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-permission-backend/alpha')); +backend.add(import('@backstage/plugin-permission-backend')); backend.add( import('@backstage/plugin-permission-backend-module-allow-all-policy'), ); @@ -1296,7 +1290,7 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-permission-backend/alpha')); +backend.add(import('@backstage/plugin-permission-backend')); backend.add(customPermissionBackendModule); /* highlight-add-end */ ``` @@ -1311,7 +1305,7 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-techdocs-backend/alpha')); +backend.add(import('@backstage/plugin-techdocs-backend')); /* highlight-add-end */ ``` @@ -1325,7 +1319,7 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-kubernetes-backend/alpha')); +backend.add(import('@backstage/plugin-kubernetes-backend')); /* highlight-add-end */ ``` diff --git a/docs/backend-system/core-services/auth.md b/docs/backend-system/core-services/auth.md index f1243f11fe..8a3a63805d 100644 --- a/docs/backend-system/core-services/auth.md +++ b/docs/backend-system/core-services/auth.md @@ -73,7 +73,8 @@ router.get('/makes-calls', async (req, res) => { onBehalfOf: await httpAuth.credentials(req), targetPluginId: 'catalog', }); - // make a call using the token +}); +// make a call using the token ``` This ensures that the original caller and their associated permissions are @@ -106,7 +107,7 @@ objects. For example checking what type of principal (caller type - e.g. user or service) they represent. For example: ```ts -if (auth.isPrincipal(credentials, 'user)) { +if (auth.isPrincipal(credentials, 'user')) { // In here, the TypeScript type of the credentials object has been properly // narrowed to `BackstageCredentials` so you can // access its specific properties such as `credentials.principal.userEntityRef`. diff --git a/docs/backend-system/core-services/http-auth.md b/docs/backend-system/core-services/http-auth.md index 05a26fc075..13938c921d 100644 --- a/docs/backend-system/core-services/http-auth.md +++ b/docs/backend-system/core-services/http-auth.md @@ -47,6 +47,7 @@ can do so like this: router.get('/some-request', async (req, res) => { const credentials = await httpAuth.credentials(req, { allow: ['user'] }); // Do something with the credentials here +}); ``` The second argument is optional, but in this example we specified that we only diff --git a/docs/backend-system/core-services/root-config.md b/docs/backend-system/core-services/root-config.md index 8505b9e7ec..505a9f90d1 100644 --- a/docs/backend-system/core-services/root-config.md +++ b/docs/backend-system/core-services/root-config.md @@ -44,7 +44,7 @@ There's additional configuration that you can optionally pass to setup the `conf You can configure these additional options by adding an override for the core service when calling `createBackend` like follows: ```ts -import { rootConfigServiceFactory } from '@backstage/backend-app-api'; +import { rootConfigServiceFactory } from '@backstage/backend-defaults/rootConfig'; const backend = createBackend(); diff --git a/docs/backend-system/core-services/root-http-router.md b/docs/backend-system/core-services/root-http-router.md index 88a10455f5..a2316b957b 100644 --- a/docs/backend-system/core-services/root-http-router.md +++ b/docs/backend-system/core-services/root-http-router.md @@ -59,7 +59,7 @@ const backend = createBackend(); backend.add( rootHttpRouterServiceFactory({ - configure: ({ app, middleware, routes, config, logger, lifecycle }) => { + configure: ({ app, middleware, routes, config, logger, healthRouter }) => { // Refer to https://expressjs.com/en/guide/writing-middleware.html on how to write express middleware const customMiddleware = { logging(): RequestHandler { @@ -88,11 +88,18 @@ backend.add( }, }; + // The default implementation pretty-prints JSON responses in development + if (process.env.NODE_ENV === 'development') { + app.set('json spaces', 2); + } + // the built in middleware is provided through an option in the configure function app.use(middleware.helmet()); app.use(middleware.cors()); app.use(middleware.compression()); + app.use(healthRouter); + // you can add you your own middleware in here app.use(customMiddleware.logging()); diff --git a/docs/backend-system/core-services/user-info.md b/docs/backend-system/core-services/user-info.md index e9d17f1dd7..73f461d1ec 100644 --- a/docs/backend-system/core-services/user-info.md +++ b/docs/backend-system/core-services/user-info.md @@ -47,6 +47,7 @@ additional information about that principal. router.get('/some-request', async (req, res) => { const credentials = await httpAuth.credentials(req, { allow: ['user'] }); const info = await userInfo.getUserInfo(credentials); +}); ``` The `userInfo` service only deals with credentials that contain user principals, @@ -61,6 +62,8 @@ router.get('/some-request', async (req, res) => { if (auth.isPrincipal(credentials, 'user')) { const info = await userInfo.getUserInfo(credentials); // ... + } +}); ``` The user info contains data that was extracted during sign-in for the given diff --git a/docs/contribute/index.md b/docs/contribute/index.md index 34ed1561cb..627a2ff0d0 100644 --- a/docs/contribute/index.md +++ b/docs/contribute/index.md @@ -5,9 +5,9 @@ title: Contributors description: Documentation on how to get set up for doing development on the Backstage repository --- -Our vision for Backstage is for it to become the trusted standard toolbox (read: UX layer) for the open source infrastructure landscape. Think of it like Kubernetes for developer experience. We realize this is an ambitious goal. We can’t do it alone. +Our vision for Backstage is for it to become the trusted standard toolbox (read: UX layer) for the open source infrastructure landscape. Think of it like Kubernetes for developer experience. We realize this is an ambitious goal and we can’t do it alone. -Therefore we want to create a strong community of contributors -- all working together to create the kind of delightful experience that our developers deserve. +Therefore, we want to create a strong community of contributors — all working together to create the kind of delightful experience that our developers deserve. Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given. ❤️ diff --git a/docs/contribute/project-structure.md b/docs/contribute/project-structure.md index f06fba0523..32a692e700 100644 --- a/docs/contribute/project-structure.md +++ b/docs/contribute/project-structure.md @@ -39,7 +39,7 @@ the code. - [`docs/`](https://github.com/backstage/backstage/tree/master/docs) - This is where we keep all of our documentation Markdown files. These end up on https://backstage.io/docs. Just keep in mind that changes to the - [`sidebars.json`](https://github.com/backstage/backstage/blob/master/microsite/sidebars.json) + [`sidebars.js`](https://github.com/backstage/backstage/blob/master/microsite/sidebars.js) file may be needed as sections are added/removed. - [`.editorconfig`](https://github.com/backstage/backstage/tree/master/.editorconfig) - diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 7b71c2eb61..afab8ef54d 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -40,49 +40,58 @@ package with `yarn build:backend`. In a CI workflow it might look something like this, from the root: ```bash -yarn install --frozen-lockfile +yarn install --immutable # tsc outputs type definitions to dist-types/ in the repo root, which are then consumed by the build yarn tsc # Build the backend, which bundles it all up into the packages/backend/dist folder. # The configuration files here should match the one you use inside the Dockerfile below. -yarn build:backend --config ../../app-config.yaml +yarn build:backend --config ../../app-config.yaml --config ../../app-config.production.yaml ``` Once the host build is complete, we are ready to build our image. The following `Dockerfile` is included when creating a new app with `@backstage/create-app`: ```dockerfile -FROM node:18-bookworm-slim +FROM node:20-bookworm-slim + +# Set Python interpreter for `node-gyp` to use +ENV PYTHON=/usr/bin/python3 # Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ apt-get install -y --no-install-recommends python3 g++ build-essential && \ - yarn config set python /usr/bin/python3 + rm -rf /var/lib/apt/lists/* # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, # in which case you should also move better-sqlite3 to "devDependencies" in package.json. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ - apt-get install -y --no-install-recommends libsqlite3-dev + apt-get install -y --no-install-recommends libsqlite3-dev && \ + rm -rf /var/lib/apt/lists/* # From here on we use the least-privileged `node` user to run the backend. USER node # This should create the app dir as `node`. -# If it is instead created as `root` then the `tar` command below will -# fail: `can't create directory 'packages/': Permission denied`. -# If this occurs, then ensure BuildKit is enabled (`DOCKER_BUILDKIT=1`) -# so the app dir is correctly created as `node`. +# If it is instead created as `root` then the `tar` command below will fail: `can't create directory 'packages/': Permission denied`. +# If this occurs, then ensure BuildKit is enabled (`DOCKER_BUILDKIT=1`) so the app dir is correctly created as `node`. WORKDIR /app +# Copy files needed by Yarn +COPY --chown=node:node .yarn ./.yarn +COPY --chown=node:node .yarnrc.yml ./ + # This switches many Node.js dependencies to production mode. ENV NODE_ENV=production +# This disables node snapshot for Node 20 to work with the Scaffolder +ENV NODE_OPTIONS="--no-node-snapshot" + # Copy repo skeleton first, to avoid unnecessary docker cache invalidation. # The skeleton contains the package.json of each package in the monorepo, # and along with yarn.lock and the root package.json, that's enough to run yarn install. @@ -90,7 +99,7 @@ COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \ - yarn install --frozen-lockfile --production --network-timeout 300000 + yarn workspaces focus --all --production && rm -rf "$(yarn cache clean)" # This will include the examples, if you don't need these simply remove this line COPY --chown=node:node examples ./examples @@ -169,10 +178,12 @@ the repo root: ```dockerfile # Stage 1 - Create yarn install skeleton layer -FROM node:18-bookworm-slim AS packages +FROM node:20-bookworm-slim AS packages WORKDIR /app COPY package.json yarn.lock ./ +COPY .yarn ./.yarn +COPY .yarnrc.yml ./ COPY packages packages @@ -182,57 +193,65 @@ COPY plugins plugins RUN find packages \! -name "package.json" -mindepth 2 -maxdepth 2 -exec rm -rf {} \+ # Stage 2 - Install dependencies and build packages -FROM node:18-bookworm-slim AS build +FROM node:20-bookworm-slim AS build + +# Set Python interpreter for `node-gyp` to use +ENV PYTHON=/usr/bin/python3 # Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ apt-get install -y --no-install-recommends python3 g++ build-essential && \ - yarn config set python /usr/bin/python3 + rm -rf /var/lib/apt/lists/* # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, # in which case you should also move better-sqlite3 to "devDependencies" in package.json. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ - apt-get install -y --no-install-recommends libsqlite3-dev + apt-get install -y --no-install-recommends libsqlite3-dev && \ + rm -rf /var/lib/apt/lists/* USER node WORKDIR /app COPY --from=packages --chown=node:node /app . +COPY --from=packages --chown=node:node /app/.yarn ./.yarn +COPY --from=packages --chown=node:node /app/.yarnrc.yml ./ RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \ - yarn install --frozen-lockfile --network-timeout 600000 + yarn install --immutable COPY --chown=node:node . . RUN yarn tsc RUN yarn --cwd packages/backend build -# If you have not yet migrated to package roles, use the following command instead: -# RUN yarn --cwd packages/backend backstage-cli backend:bundle --build-dependencies RUN mkdir packages/backend/dist/skeleton packages/backend/dist/bundle \ && tar xzf packages/backend/dist/skeleton.tar.gz -C packages/backend/dist/skeleton \ && tar xzf packages/backend/dist/bundle.tar.gz -C packages/backend/dist/bundle # Stage 3 - Build the actual backend image and install production dependencies -FROM node:18-bookworm-slim +FROM node:20-bookworm-slim + +# Set Python interpreter for `node-gyp` to use +ENV PYTHON=/usr/bin/python3 # Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ apt-get install -y --no-install-recommends python3 g++ build-essential && \ - yarn config set python /usr/bin/python3 + rm -rf /var/lib/apt/lists/* # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, # in which case you should also move better-sqlite3 to "devDependencies" in package.json. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ - apt-get install -y --no-install-recommends libsqlite3-dev + apt-get install -y --no-install-recommends libsqlite3-dev && \ + rm -rf /var/lib/apt/lists/* # From here on we use the least-privileged `node` user to run the backend. USER node @@ -245,13 +264,15 @@ USER node WORKDIR /app # Copy the install dependencies from the build stage and context +COPY --from=build --chown=node:node /app/.yarn ./.yarn +COPY --from=build --chown=node:node /app/.yarnrc.yml ./ COPY --from=build --chown=node:node /app/yarn.lock /app/package.json /app/packages/backend/dist/skeleton/ ./ # Note: The skeleton bundle only includes package.json files -- if your app has # plugins that define a `bin` export, the bin files need to be copied as well to # be linked in node_modules/.bin during yarn install. RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \ - yarn install --frozen-lockfile --production --network-timeout 600000 + yarn workspaces focus --all --production && rm -rf "$(yarn cache clean)" # Copy the built packages from the build stage COPY --from=build --chown=node:node /app/packages/backend/dist/bundle/ ./ @@ -265,6 +286,9 @@ COPY --chown=node:node examples ./examples # This switches many Node.js dependencies to production mode. ENV NODE_ENV=production +# This disables node snapshot for Node 20 to work with the Scaffolder +ENV NODE_OPTIONS="--no-node-snapshot" + CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"] ``` @@ -325,7 +349,7 @@ package, which is done as follows: 2. Remove the following line from `packages/backend/src/index.ts`: ```ts - backend.add(import('@backstage/plugin-app-backend/alpha')); + backend.add(import('@backstage/plugin-app-backend')); ``` 3. Remove the `@backstage/plugin-app-backend` and the app package dependency diff --git a/docs/deployment/flightcontrol.md b/docs/deployment/flightcontrol.md index 14e0b308a6..df0c9284fb 100644 --- a/docs/deployment/flightcontrol.md +++ b/docs/deployment/flightcontrol.md @@ -7,7 +7,7 @@ description: Deploying Backstage to AWS Fargate via Flightcontrol This guide explains how to deploy Backstage to [Flightcontrol](https://www.flightcontrol.dev?ref=backstage), a platform that fully automates deployments to Amazon Web Services (AWS). Flightcontrol supports git-driven and image registry deployments. -Before you begin, make sure you have a [Flightcontrol account](https://app.flightcontrol.dev/signup?ref=backstage) and a [Github account](https://github.com/login) to follow this guide. +Before you begin, make sure you have a [Flightcontrol account](https://app.flightcontrol.dev/signup?ref=backstage) and a [GitHub account](https://github.com/login) to follow this guide. # Creating a Dockerfile and .dockerignore @@ -28,7 +28,7 @@ The following two code snippets demonstrate this method. The first block of code # yarn build:backend # # Once the commands have been run, you can build the image using `yarn build-image` -FROM node:18-bookworm-slim as build +FROM node:20-bookworm-slim as build USER node WORKDIR /app @@ -43,7 +43,7 @@ RUN yarn tsc # The configuration files here should match the one you use inside the Dockerfile below. RUN yarn build:backend --config ../../app-config.yaml -FROM node:18-bookworm-slim +FROM node:20-bookworm-slim # Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ diff --git a/docs/deployment/heroku.md b/docs/deployment/heroku.md index 51d0b4b439..8961848894 100644 --- a/docs/deployment/heroku.md +++ b/docs/deployment/heroku.md @@ -126,7 +126,7 @@ heroku stack:set container -a Locally run the [host build commands](https://backstage.io/docs/deployment/docker/#host-build), they must be run whenever you are going to publish a new image: ```shell -yarn install --frozen-lockfile +yarn install --immutable yarn tsc yarn build:backend --config ../../app-config.yaml --config ../../app-config.production.yaml ``` diff --git a/docs/features/kubernetes/installation.md b/docs/features/kubernetes/installation.md index 279c9cbf3f..aca4c19ac1 100644 --- a/docs/features/kubernetes/installation.md +++ b/docs/features/kubernetes/installation.md @@ -96,6 +96,7 @@ async function main() { // ... /* highlight-add-next-line */ apiRouter.use('/kubernetes', await kubernetes(kubernetesEnv)); +} ``` That's it! The Kubernetes frontend and backend have now been added to your @@ -119,7 +120,7 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-kubernetes-backend/alpha')); +backend.add(import('@backstage/plugin-kubernetes-backend')); /* highlight-add-end */ backend.start(); @@ -227,7 +228,7 @@ export const kubernetesModuleCustomClusterDiscovery = createBackendModule({ }); // Other plugins... -backend.add(import('@backstage/plugin-kubernetes-backend/alpha')); +backend.add(import('@backstage/plugin-kubernetes-backend')); backend.add(kubernetesModuleCustomClusterDiscovery); backend.start(); diff --git a/docs/features/search/collators.md b/docs/features/search/collators.md index 27860bfd64..0282bc845e 100644 --- a/docs/features/search/collators.md +++ b/docs/features/search/collators.md @@ -24,10 +24,10 @@ const backend = createBackend(); // Other plugins... // search plugin -backend.add(import('@backstage/plugin-search-backend/alpha')); +backend.add(import('@backstage/plugin-search-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha')); +backend.add(import('@backstage/plugin-search-backend-module-catalog')); /* highlight-add-end */ backend.start(); @@ -68,10 +68,10 @@ const backend = createBackend(); // Other plugins... // search plugin -backend.add(import('@backstage/plugin-search-backend/alpha')); +backend.add(import('@backstage/plugin-search-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); +backend.add(import('@backstage/plugin-search-backend-module-techdocs')); /* highlight-add-end */ backend.start(); diff --git a/docs/features/search/getting-started.md b/docs/features/search/getting-started.md index 362b7fc46d..a4b5348dbb 100644 --- a/docs/features/search/getting-started.md +++ b/docs/features/search/getting-started.md @@ -145,14 +145,14 @@ const backend = createBackend(); /* highlight-add-start */ // search plugin -backend.add(import('@backstage/plugin-search-backend/alpha')); +backend.add(import('@backstage/plugin-search-backend')); // search engines -backend.add(import('@backstage/plugin-search-backend-module-pg/alpha')); +backend.add(import('@backstage/plugin-search-backend-module-pg')); // search collators -backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha')); -backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); +backend.add(import('@backstage/plugin-search-backend-module-catalog')); +backend.add(import('@backstage/plugin-search-backend-module-techdocs')); /* highlight-add-end */ backend.start(); diff --git a/docs/features/search/how-to-guides.md b/docs/features/search/how-to-guides.md index b0df9440f3..007b108df5 100644 --- a/docs/features/search/how-to-guides.md +++ b/docs/features/search/how-to-guides.md @@ -86,17 +86,27 @@ const techDocsEntityTransformer: TechDocsCollatorEntityTransformer = ( ) => { return { // add more fields to the index - ...defaultTechDocsCollatorEntityTransformer(entity), tags: entity.metadata.tags, }; }; +const techDocsDocumentTransformer: TechDocsCollatorDocumentTransformer = ( + doc: MkSearchIndexDoc, +) => { + return { + // add more fields to the index + bost: doc.boost, + }; +}; + indexBuilder.addCollator({ collator: DefaultTechDocsCollatorFactory.fromConfig(env.config, { discovery: env.discovery, tokenManager: env.tokenManager, /* highlight-add-next-line */ entityTransformer: techDocsEntityTransformer, + /* highlight-add-next-line */ + documentTransformer: techDocsDocumentTransformer, }), }); ``` @@ -143,28 +153,64 @@ how highlighted terms look you can follow Backstage's guide on how to [Customize the look-and-feel of your App](https://backstage.io/docs/getting-started/app-custom-theme) to create an override with your preferred styling. -For example, the following will result in highlighted terms to be bold & underlined: +For example, using the new MUI V4+V5 unified theming method, the following will result +in highlighted words to be bold & underlined: -```tsx -const highlightOverride = { - BackstageHighlightedSearchResultText: { - highlight: { - color: 'inherit', - backgroundColor: 'inherit', - fontWeight: 'bold', - textDecoration: 'underline', +```typescript jsx title=packages/app/src/theme/theme.ts +import { + createBaseThemeOptions, + createUnifiedTheme, + palettes, + UnifiedTheme, +} from '@backstage/theme'; + +export const myLightTheme: UnifiedTheme = createUnifiedTheme({ + ...createBaseThemeOptions({ + palette: palettes.light, + }), + defaultPageTheme: 'home', + components: { + /** @ts-ignore This is temporarily necessary until MUI V5 transition is completed. */ + BackstageHighlightedSearchResultText: { + styleOverrides: { + highlight: { + color: 'inherit', + backgroundColor: 'inherit', + fontWeight: 'bold', + textDecoration: 'underline', + }, + }, }, }, -}; +}); ``` +```typescript jsx title= packages/app/src/App.tsx + +const app : BackstageApp = createApp({ + ... + themes: [{ + id: 'my-light-theme', + title: 'Light Theme', + variant: 'light', + icon: , + Provider: ({ children }) => () + }] +}); +``` + +Obviously if you wanted a dark theme, you would need to provide that as well. + ## How to render search results using extensions -Extensions for search results let you customize components used to render search result items, It is possible to provide your own search result item extensions or use the ones provided by plugin packages: +Extensions for search results let you customize components used to render search result items, It is possible to provide your own search result item extensions or use the ones provided by plugin packages. ### 1. Providing an extension in your plugin package -Using the example below, you can provide an extension to be used as a default result item: +> Note: You must use the `plugin.provide()` function to make a search item renderer available. Unlike rendering a list in a standard MUI Table or similar, you cannot simply provide +> a rendering function to the `` component. + +Using the example below, you can provide an extension to be used as a search result item: ```tsx title="plugins/your-plugin/src/plugin.ts" import { createPlugin } from '@backstage/core-plugin-api'; @@ -214,7 +260,7 @@ export const YourSearchResultListItemExtension = plugin.provide( ); ``` -Remember to export your new extension: +Remember to export your new extension via your plugin's `index.ts` so that it is available from within your app: ```tsx title="plugins/your-plugin/src/index.ts" export { YourSearchResultListItem } from './plugin.ts'; @@ -222,9 +268,12 @@ export { YourSearchResultListItem } from './plugin.ts'; For more details, see the [createSearchResultListItemExtension](https://backstage.io/docs/reference/plugin-search-react.createsearchresultlistitemextension) API reference. -### 2. Using an extension in your Backstage app +### 2. Custom search result extension in the SearchPage -Now that you know how a search result item is provided, let's finally see how they can be used, for example, to compose a page in your application: +Once you have exposed your item renderer via the `plugin.provide()` function, you can now override the default search item renderers and tell the `` component +which renderers to use. Note that the order of the renderers matters! The first one that matches via its predicate function will be used. + +Here is an example of customizing your `SearchPage`: ```tsx title="packages/app/src/components/searchPage.tsx" import React from 'react'; @@ -276,9 +325,38 @@ const SearchPage = () => ( export const searchPage = ; ``` -> **Important**: A default result item extension should be placed as the last child, so it can be used only when no other extensions match the result being rendered. If a non-default extension is specified, the `DefaultResultListItem` component will be used. +> **Important**: A default result item extension (one that does not have a predicate) should be placed as the last child, so it can be used only when no other extensions match the result being rendered. +> If a non-default extension is specified, the `DefaultResultListItem` component will be used. -As another example, here's a search modal that renders results with extensions: +### 2. Custom search result extension in the SidebarSearchModal + +You may be using the SidebarSearchModal component. In this case, you can customize the search items in this component as follows: + +```tsx title="packages/app/src/components/Root/Root.tsx" +import { SidebarSearchModal } from '@backstage/plugin-search'; +... +export const Root = ({ children }: PropsWithChildren<{}>) => { + const styles = useStyles(); + + return + + ... + } />, + /* Provide an existing search item renderer */ + } /> + ]} /> + ... + + {children} + ; +}; +``` + +### 3. Custom search result extension in a custom SearchModal + +Assuming you have completely customized your SearchModal, here's an example that renders results with extensions: ```tsx title="packages/app/src/components/searchModal.tsx" import React from 'react'; diff --git a/docs/features/search/search-engines.md b/docs/features/search/search-engines.md index f768a9bde8..8209ae951d 100644 --- a/docs/features/search/search-engines.md +++ b/docs/features/search/search-engines.md @@ -25,7 +25,7 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-search-backend/alpha')); +backend.add(import('@backstage/plugin-search-backend')); /* highlight-add-end */ backend.start(); @@ -65,10 +65,10 @@ const backend = createBackend(); // Other plugins... // search plugin -backend.add(import('@backstage/plugin-search-backend/alpha')); +backend.add(import('@backstage/plugin-search-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-search-backend-module-pg/alpha')); +backend.add(import('@backstage/plugin-search-backend-module-pg')); /* highlight-add-end */ backend.start(); @@ -124,12 +124,10 @@ const backend = createBackend(); // Other plugins... // search plugin -backend.add(import('@backstage/plugin-search-backend/alpha')); +backend.add(import('@backstage/plugin-search-backend')); /* highlight-add-start */ -backend.add( - import('@backstage/plugin-search-backend-module-elasticsearch/alpha'), -); +backend.add(import('@backstage/plugin-search-backend-module-elasticsearch')); /* highlight-add-end */ backend.start(); diff --git a/docs/features/software-catalog/configuration.md b/docs/features/software-catalog/configuration.md index 67382aa6ce..2d86811b14 100644 --- a/docs/features/software-catalog/configuration.md +++ b/docs/features/software-catalog/configuration.md @@ -31,7 +31,7 @@ catalog (`UrlReaderProcessor`), so no processor configuration is needed. This processor _does however_ need an [integration](../../integrations/index.md) to understand how to retrieve a given URL. For the example above, you would need to configure the [GitHub integration](../../integrations/github/locations.md) to -read files from github.com. +read files from [github.com](https://github.com/). The locations added through static configuration cannot be removed through the catalog locations API. To remove these locations, you must remove them from the @@ -165,7 +165,7 @@ catalog: ## Processing Interval -The [processing loop](https://backstage.io/docs/features/software-catalog/life-of-an-entity) is +The [processing loop](./life-of-an-entity.md#processing) is responsible for running your registered processors on all entities, on a certain interval. That interval can be configured with the `processingInterval` app-config parameter. @@ -192,20 +192,50 @@ Setting this value too low risks exhausting rate limits on external systems that are queried by processors, such as version control systems housing catalog-info files. +## Stitching strategy + +[Stitching](./life-of-an-entity.md#stitching) finalizes the entity. It can be run in +two modes: + +- `immediate` - performs stitching in-band immediately when needed +- `deferred` - performs the stitching asynchronously + +It can be configured with the `stitchingStrategy` app-config parameter. + +```yaml title="app-config.yaml" +catalog: + stitchingStrategy: immediate +``` + +For the `deferred` mode you can set up additional parameters to further tune the process, +by setting the following parameters: + +- `pollingInterval` - the interval between polling for entities that need stitching +- `stitchTimeout` - the maximum time to wait for an entity to be stitched + +These parameters accept a duration object, similar to the `processingInterval` parameter. + +```yaml title="app-config.yaml" +catalog: + stitchingStrategy: deferred + pollingInterval: { seconds: 1 } + stitchTimeout: { minutes: 1 }; +``` + ## Subscribing to Catalog Errors Catalog errors are published to the [events plugin](https://github.com/backstage/backstage/tree/master/plugins/events-node): `@backstage/plugin-events-node`. You can subscribe to events and respond to errors, for example you may wish to log them. The first step is to add the events backend plugin to your Backstage application. Navigate to your Backstage application directory and add the plugin package. -```ts title="From your Backstage root directory" +```bash title="From your Backstage root directory" yarn --cwd packages/backend add @backstage/plugin-events-backend ``` Now you can install the events backend plugin in your backend. ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-events-backend/alpha')); +backend.add(import('@backstage/plugin-events-backend')); ``` ### Logging Errors @@ -214,7 +244,7 @@ If you want to log catalog errors you can install the `@backstage/plugin-catalog Install the catalog logs module. -```ts title="From your Backstage root directory" +```bash title="From your Backstage root directory" yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-logs ``` diff --git a/docs/features/software-catalog/descriptor-format.md b/docs/features/software-catalog/descriptor-format.md index 57c2283586..17bdac56e9 100644 --- a/docs/features/software-catalog/descriptor-format.md +++ b/docs/features/software-catalog/descriptor-format.md @@ -527,6 +527,8 @@ spec: system: artist-engagement-portal dependsOn: - resource:default/artists-db + dependencyOf: + - component:default/artist-web-lookup providesApis: - artist-api ``` @@ -636,6 +638,17 @@ field is optional. | [`Component`](#kind-component) | Same as this entity, typically `default` | [`dependsOn`, and reverse `dependencyOf`](well-known-relations.md#dependson-and-dependencyof) | | [`Resource`](#kind-resource) | Same as this entity, typically `default` | [`dependsOn`, and reverse `dependencyOf`](well-known-relations.md#dependson-and-dependencyof) | +### `spec.dependencyOf` [optional] + +An array of [entity references](references.md#string-references) to the +components and resources that the component is a dependency of, e.g. `artist-web-lookup`. +This field is optional. + +| [`kind`](#apiversion-and-kind-required) | Default [`namespace`](#namespace-optional) | Generated [relation](well-known-relations.md) type | +| --------------------------------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------- | +| [`Component`](#kind-component) | Same as this entity, typically `default` | [`dependencyOf`, and reverse `dependsOn`](well-known-relations.md#dependson-and-dependencyof) | +| [`Resource`](#kind-resource) | Same as this entity, typically `default` | [`dependencyOf`, and reverse `dependsOn`](well-known-relations.md#dependson-and-dependencyof) | + ## Kind: Template The following describes the following entity kind: diff --git a/docs/features/software-catalog/external-integrations.md b/docs/features/software-catalog/external-integrations.md index 4d5b283c4e..f721c50ec2 100644 --- a/docs/features/software-catalog/external-integrations.md +++ b/docs/features/software-catalog/external-integrations.md @@ -77,28 +77,30 @@ yarn new --select backend-module --option id=catalog The class will have this basic structure: -```ts -import { UrlReader } from '@backstage/backend-common'; +```ts title="plugins/catalog-backend-module-frobs/src/FrobsProvider.ts" import { Entity } from '@backstage/catalog-model'; import { EntityProvider, EntityProviderConnection, } from '@backstage/plugin-catalog-node'; -import { SchedulerServiceTaskRunner } from '@backstage/backend-plugin-api'; +import { + SchedulerServiceTaskRunner, + UrlReaderService, +} from '@backstage/backend-plugin-api'; /** * Provides entities from fictional frobs service. */ export class FrobsProvider implements EntityProvider { private readonly env: string; - private readonly reader: UrlReader; + private readonly reader: UrlReaderService; private connection?: EntityProviderConnection; private taskRunner: SchedulerServiceTaskRunner; /** [1] */ constructor( env: string, - reader: UrlReader, + reader: UrlReaderService, taskRunner: SchedulerServiceTaskRunner, ) { this.env = env; @@ -114,7 +116,7 @@ export class FrobsProvider implements EntityProvider { /** [3] */ async connect(connection: EntityProviderConnection): Promise { this.connection = connection; - this.taskRunner.run({ + await this.taskRunner.run({ id: this.getProviderName(), fn: async () => { await this.run(); @@ -131,7 +133,7 @@ export class FrobsProvider implements EntityProvider { const response = await this.reader.readUrl( `https://frobs-${this.env}.example.com/data`, ); - const data = JSON.parse(await response.buffer()).toString(); + const data = JSON.parse((await response.buffer()).toString()); /** [5] */ const entities: Entity[] = frobsToEntities(data); @@ -200,7 +202,7 @@ bucket is accessible. There are two different types of mutation. The first is `'full'`, which means to figuratively throw away the contents of -the bucket and replacing it with all of the new contents specified. Under the +the bucket and replacing it with all the new contents specified. Under the hood, this is actually implemented through a highly efficient delta mechanism for performance reasons, since it is common that the difference from one run to the other is actually very small. This strategy is convenient for providers that @@ -324,7 +326,7 @@ export const catalogModuleFrobsProvider = createBackendModule({ const backend = createBackend(); -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); backend.add(catalogModuleFrobsProvider); // Other plugins ... @@ -436,66 +438,66 @@ We create a basic entity provider as shown above. In the example below we might import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, -} from '@backstage/catalog-model' +} from '@backstage/catalog-model'; import { EntityProvider, EntityProviderConnection, -} from '@backstage/plugin-catalog-backend' -import { WebClient } from '@slack/web-api' -import {kebabCase} from 'lodash' +} from '@backstage/plugin-catalog-backend'; +import { WebClient } from '@slack/web-api'; +import { kebabCase } from 'lodash'; interface Staff { - displayName: string - slackUserId: string - jobTitle: string - photoUrl: string - address: string - email:string + displayName: string; + slackUserId: string; + jobTitle: string; + photoUrl: string; + address: string; + email: string; } export class UserEntityProvider implements EntityProvider { - private readonly getStaffUrl: string - protected readonly slackTeam: string - protected readonly slackToken: string - protected connection?: EntityProviderConnection + private readonly getStaffUrl: string; + protected readonly slackTeam: string; + protected readonly slackToken: string; + protected connection?: EntityProviderConnection; static fromConfig(config: Config, options: { logger: Logger }) { - const getStaffUrl = config.getString('staff.url') - const slackToken = config.getString('slack.token') - const slackTeam = config.getString('slack.team') + const getStaffUrl = config.getString('staff.url'); + const slackToken = config.getString('slack.token'); + const slackTeam = config.getString('slack.team'); return new UserEntityProvider({ ...options, getStaffUrl, slackToken, slackTeam, - }) + }); } private constructor(options: { - getStaffUrl: string - slackToken: string - slackTeam: string + getStaffUrl: string; + slackToken: string; + slackTeam: string; }) { - this.getStaffUrl = options.getStaffUrl - this.slackToken = options.slackToken - this.slackTeam = options.slackTeam + this.getStaffUrl = options.getStaffUrl; + this.slackToken = options.slackToken; + this.slackTeam = options.slackTeam; } - async getAllStaff(): Promise{ - await return axios.get(this.getStaffUrl) + async getAllStaff(): Promise { + return await axios.get(this.getStaffUrl); } public async connect(connection: EntityProviderConnection): Promise { - this.connection = connection + this.connection = connection; } async run(): Promise { if (!this.connection) { - throw new Error('User Connection Not initialized') + throw new Error('User Connection Not initialized'); } - const userResources: UserEntity[] = [] - const staff = await this.getAllStaff() + const userResources: UserEntity[] = []; + const staff = await this.getAllStaff(); for (const user of staff) { // we can add any links here in this case it would be adding a slack link to the users so you can directly slack them. @@ -508,7 +510,7 @@ export class UserEntityProvider implements EntityProvider { icon: 'message', }, ] - : undefined + : undefined; const userEntity: UserEntity = { kind: 'User', apiVersion: 'backstage.io/v1alpha1', @@ -531,20 +533,20 @@ export class UserEntityProvider implements EntityProvider { }, memberOf: [], }, - } + }; - userResources.push(userEntity) + userResources.push(userEntity); } await this.connection.applyMutation({ type: 'full', - entities: userResources.map((entity) => ({ + entities: userResources.map(entity => ({ entity, locationKey: 'hr-user-https://www.hrurl.com/', })), - }) + }); + } } - ``` ## Custom Processors @@ -595,7 +597,7 @@ startup. They are at the heart of all catalog logic, and have the ability to read the contents of locations, modify in-flight entities that were read out of a location, perform validation, and more. The catalog comes with a set of builtin processors, that have the ability to read from a list of well known -location types, to perform the basic processing needs, etc, but more can be +location types, to perform the basic processing needs, etc., but more can be added by the organization that adopts Backstage. We will now show the process of creating a new processor and location type, @@ -654,18 +656,18 @@ yarn new --select backend-module --option id=catalog The class will have this basic structure: ```ts -import { UrlReader } from '@backstage/backend-common'; import { processingResult, CatalogProcessor, CatalogProcessorEmit, } from '@backstage/plugin-catalog-node'; +import { UrlReaderService } from '@backstage/backend-plugin-api'; import { LocationSpec } from '@backstage/plugin-catalog-common'; // A processor that reads from the fictional System-X export class SystemXReaderProcessor implements CatalogProcessor { - constructor(private readonly reader: UrlReader) {} + constructor(private readonly reader: UrlReaderService) {} getProcessorName(): string { return 'SystemXReaderProcessor'; @@ -762,7 +764,7 @@ export const catalogModuleSystemXReaderProcessor = createBackendModule({ const backend = createBackend(); -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); backend.add(catalogModuleSystemXReaderProcessor); // Other plugins ... @@ -784,8 +786,8 @@ locations in GitHub. This example aims to demonstrate how to add the same behavior for `system-x` that we implemented earlier. ```ts -import { UrlReader } from '@backstage/backend-common'; import { Entity } from '@backstage/catalog-model'; +import { UrlReaderService } from '@backstage/backend-plugin-api'; import { processingResult, CatalogProcessor, @@ -808,7 +810,7 @@ type CacheItem = { }; export class SystemXReaderProcessor implements CatalogProcessor { - constructor(private readonly reader: UrlReader) {} + constructor(private readonly reader: UrlReaderService) {} getProcessorName() { // The processor name must be unique. @@ -851,7 +853,7 @@ export class SystemXReaderProcessor implements CatalogProcessor { } // For this example the JSON payload is a single entity. - const entity: Entity = JSON.parse(response.buffer.toString()); + const entity: Entity = JSON.parse((await response.buffer()).toString()); emit(processingResult.entity(location, entity)); // Update the cache with the new ETag and entity used for the next run. @@ -922,13 +924,13 @@ const makeEntityFromCustomFormatJson = ( [ANNOTATION_LOCATION]: `${location.type}:${location.target}`, [ANNOTATION_ORIGIN_LOCATION]: `${location.type}:${location.target}`, }, - } + }, spec: { type: component.type, owner: component.author, - lifecycle: 'experimental' - } - } + lifecycle: 'experimental', + }, + }; }; export const customEntityDataParser: CatalogProcessorParser = async function* ({ @@ -960,9 +962,8 @@ export const customEntityDataParser: CatalogProcessorParser = async function* ({ // Is this a catalog-info.yaml file? if (json.apiVersion) { yield processingResult.entity(location, json as Entity); - - // let's treat this like it's our custom format instead. } else { + // let's treat this like it's our custom format instead. yield processingResult.entity( location, makeEntityFromCustomFormatJson(json, location), @@ -978,7 +979,7 @@ export const customEntityDataParser: CatalogProcessorParser = async function* ({ } } } -} +}; ``` This is a lot of code right now, as this is a pretty niche use-case, so we don't currently provide many helpers for you to be able to provide custom implementations easier or to compose together different parsers. @@ -1024,7 +1025,7 @@ export const catalogModuleCustomDataParser = createBackendModule({ const backend = createBackend(); -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); backend.add(catalogModuleCustomDataParser); // Other plugins ... @@ -1085,7 +1086,7 @@ interface Service { } ``` -These are the only 3 methods that you need to implement. `getProviderName()` is pretty self explanatory and it's identical to the `getProviderName()` method on a regular Entity Provider. +These are the only 3 methods that you need to implement. `getProviderName()` is pretty self-explanatory and it's identical to the `getProviderName()` method on a regular Entity Provider. ```ts import { IncrementalEntityProvider } from '@backstage/plugin-catalog-backend-module-incremental-ingestion'; @@ -1178,7 +1179,7 @@ export class MyIncrementalEntityProvider async next( context: Context, - cursor?: Cursor = { page: 1 }, + cursor: Cursor = { page: 1 }, ): Promise> { const { apiClient } = context; diff --git a/docs/features/software-catalog/faq.md b/docs/features/software-catalog/faq.md new file mode 100644 index 0000000000..a8a1a30379 --- /dev/null +++ b/docs/features/software-catalog/faq.md @@ -0,0 +1,44 @@ +--- +id: faq +title: Catalog FAQ +sidebar_label: FAQ +description: This page answers frequently asked questions about the catalog +--- + +This page answers frequently asked questions about the catalog. + +## Is it all that important to have users and groups in the catalog at all? + +Yes. One of the most important concepts in the catalog is that it exposes your org structure and ownership properly, allowing your users to effectively understand and communicate around your systems. Having catalog entries for users and groups enables end users to navigate around Backstage and click on those owners and being presented with rich information pages around them, instead of getting 404 Not Found pages. + +## Can I create users in the catalog on-demand as they sign in? + +When standing up a new Backstage instance, adopters are faced with the realization that the catalog tends to have interactions with sign-in. Therefore the question often comes up, whether it's doable to have users pop up in the catalog on-demand only as they sign in. + +This should really be avoided. Our general guidance is to set up a proper integration upfront with your authority for organizational data ([LDAP](../../integrations/ldap/org.md), [Azure](../../integrations/azure/org.md), bespoke HR systems, etc) and batch ingest _all_ users and groups from there into the catalog, whether they sign in or not. This tends to give the superior experience for users, with the smallest amount possible of complexity and frustration. + +To give some background, [signing in](../../auth/index.md) technically only requires the `auth` backend which supports the flows that establish who the current user is. At the end of that process, a so called [sign-in resolver](../../auth/identity-resolver.md) is tasked with translating the third party established identity (for example the attributes returned for your AD entry) into a Backstage identity. This important step is made much simpler if the catalog is populated with users and groups from that same third party, because identities line up trivially and you can use the out-of-the-box provided sign-in resolvers for it. As a side note, you can also write your own resolver that does not interact with the catalog at all if you so desire, but let's assume that you do not chose this advanced option. + +Doing on-demand user creation _is_ technically possible by writing custom [entity providers](./external-integrations.md). But it comes with significant problems both for technical and end user quality of life reasons. + +On the technical side, this is unwanted complexity. You need to implement and maintain a custom provider, instead of what usually amounts to a very easily set-up batch ingestion schedule with providers that come out of the box. Also even if you do this, the catalog is an eventually consistent engine. The user that the provider feeds into the system is not guaranteed to appear immediately. Your experience will likely be only partially functional at bootstrapping time which may have unwanted side effects. + +On the user experience side, a Backstage experience without complete organizational data is a serious hindrance to getting the full power out of the tool. Your users won't be able to click on owners and seeing who they are and what teams they belong to. They won't be able to find out what the communications paths are when they need to reach you or your managers when something goes wrong or they have a feature request. They can't get an overview of what teams own and how they relate to each other. It will be a much more barren experience. Organizational data is highly valuable to have centrally available, complete and correct. + +## Can I call the catalog itself from inside a processor / provider? + +Any backend module, including those that provide processors and entity providers to the catalog, are technically able to get hold of a catalog client via the `catalogServiceRef` from `@backstage/plugin-catalog-node`. However, it is almost never the right thing to do - especially from processors - and we strongly discourage from doing so. + +The catalog processing loop is a very high-speed system where your entire catalog cluster collaborates to race through all entities at the highest possible rate. The ideal processor does an absolute minimum of work, and immediately relinquishes control back. Performing asynchronous requests to external systems - including the catalog - from processors, can quickly become overwhelming for that external system and starve their resources if they aren't prepared to deal with very high rates of small requests. It also significantly slows down the procesing loop, when each step needs to wait for responses. This can lead to work "piling up" in the catalog and delays in seeing entities get updated. The [life of an entity](./life-of-an-entity.md) article shows the sequence of events that happen when an entity goes from original ingestion, through processing, and to becoming final entities. + +See also [the related validation topic](#can-i-validate-relations-in-processors). + +## Can I validate relations in processors? + +Processors are responsible for generating relations from the entity body - see the [life of an entity](./life-of-an-entity.md) article for more details. It's tempting to put rules in your processors that mark entities as invalid if they have a relation to some other entity that does not exist. For example, a `Component` entity that declares a `spec.owner` to a team that has been disbanded. We strongly discourage from doing this type of "hard" validation in processors, for two reasons. + +First, performance. As is described [here](#can-i-call-the-catalog-itself-from-inside-a-processor--provider), you should avoid calling out to the catalog for any reason in processors, including for checking whether a target entity exists. Besides the performance issues, it can also lead to data races where hidden dependencies between entities lead to them never properly settling, or flickering back and forth between states for hard-to-debug reasons. + +Second, user experience. The catalog is an eventually consistent system that constantly tries to mirror external realities. Users make changes in catalog-info files, or things update in external systems, and those changes get streamed in and settle over time inside the catalog. But throwing an error in a processor, instantly aborts processing of that entity and stops its ingestion. Now imagine being a large organization where these changes happen maybe hundreds of times per day. Owners of catalog-info files will constantly be surprised by their files "breaking" in ingestion, maybe a very long time after they were initially created - they were valid at their time of creation and haven't been touched since! This is very frustrating and slows down your users because things break silently for reasons out of your control. + +There are cases where it's fine to throw hard validation errors in processors. Notably, when it doesn't pass a schema test at all and readers of the catalog data will break if the data was let through. Setting the owner to be a number instead of a string could be such an example. diff --git a/docs/features/software-templates/authorizing-scaffolder-template-details.md b/docs/features/software-templates/authorizing-scaffolder-template-details.md index 942431c993..d4798b2540 100644 --- a/docs/features/software-templates/authorizing-scaffolder-template-details.md +++ b/docs/features/software-templates/authorizing-scaffolder-template-details.md @@ -281,7 +281,7 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-permission-backend/alpha')); +backend.add(import('@backstage/plugin-permission-backend')); backend.add(customPermissionBackendModule); /* highlight-add-end */ ``` diff --git a/docs/features/software-templates/builtin-actions.md b/docs/features/software-templates/builtin-actions.md index 301fb4c457..bf6875764e 100644 --- a/docs/features/software-templates/builtin-actions.md +++ b/docs/features/software-templates/builtin-actions.md @@ -35,23 +35,18 @@ import { createBackend } from '@backstage/backend-defaults'; const backend = createBackend(); -backend.add(import('@backstage/plugin-app-backend/alpha')); +backend.add(import('@backstage/plugin-app-backend')); // catalog plugin -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); backend.add( import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), ); // scaffolder plugin -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); -{ - /* highlight-add-start */ -} +backend.add(import('@backstage/plugin-scaffolder-backend')); +/* highlight-add-next-line */ backend.add(import('@backstage/plugin-scaffolder-backend-module-github')); -{ - /* highlight-add-end */ -} backend.start(); ``` @@ -87,16 +82,16 @@ allow most templates built for `fetch:cookiecutter` to work without any changes. ```yaml title="template.yaml" steps: - id: fetch-base - name: Fetch Base - # highlight-remove-next-line - action: fetch:cookiecutter - # highlight-add-next-line - action: fetch:template - input: - url: ./skeleton - # highlight-add-next-line - cookiecutterCompat: true - values: + name: Fetch Base + # highlight-remove-next-line + action: fetch:cookiecutter + # highlight-add-next-line + action: fetch:template + input: + url: ./skeleton + # highlight-add-next-line + cookiecutterCompat: true + values: ``` ### Manual migration diff --git a/docs/features/software-templates/dry-run-testing.md b/docs/features/software-templates/dry-run-testing.md index dfabad265e..15c2684808 100644 --- a/docs/features/software-templates/dry-run-testing.md +++ b/docs/features/software-templates/dry-run-testing.md @@ -4,7 +4,7 @@ title: Dry Run Testing description: How to enable and implement dry run testing in actions --- -Scaffolder templates can be tested using the dry run feature of scaffolder actions. This allows you to simulate the effects of running a scaffolder action without making any actual changes to your environment, for example creating a webhook in Github. Once dry run is enabled in the scaffolder action, you can add handling to actions you use in your scaffolder templates to define how an action should operate in a dry run scenario. +Scaffolder templates can be tested using the dry run feature of scaffolder actions. This allows you to simulate the effects of running a scaffolder action without making any actual changes to your environment, for example creating a webhook in GitHub. Once dry run is enabled in the scaffolder action, you can add handling to actions you use in your scaffolder templates to define how an action should operate in a dry run scenario. ## Enabling dry run testing diff --git a/docs/features/software-templates/index.md b/docs/features/software-templates/index.md index d4fa6ac971..077090743f 100644 --- a/docs/features/software-templates/index.md +++ b/docs/features/software-templates/index.md @@ -91,19 +91,29 @@ There could be situations where you would like to disable the ![Disable Button](../../assets/software-templates/disable-register-existing-component-button.png) -To do so, you will un-register / remove the `catalogImportPlugin.routes.importPage` -from `backstage/packages/app/src/App.tsx`: +To do so, you need to explicitly disable the default route binding from the `scaffolderPlugin.registerComponent` to the Catalog Import page. + +This can be done in `backstage/packages/app/src/App.tsx`: ```diff const app = createApp({ apis, bindRoutes({ bind }) { -- bind(scaffolderPlugin.externalRoutes, { + bind(scaffolderPlugin.externalRoutes, { ++ registerComponent: false, - registerComponent: catalogImportPlugin.routes.importPage, -- }); - bind(orgPlugin.externalRoutes, { - catalogIndex: catalogPlugin.routes.catalogIndex, + viewTechDoc: techdocsPlugin.routes.docRoot, }); +}) +``` + +OR in `app-config.yaml`: + +```yaml +app: + routes: + bindings: + scaffolder.registerComponent: false ``` After the change, you should no longer see the button. diff --git a/docs/features/software-templates/migrating-to-rjsf-v5.md b/docs/features/software-templates/migrating-to-rjsf-v5.md index 856841bdd4..8357d7567b 100644 --- a/docs/features/software-templates/migrating-to-rjsf-v5.md +++ b/docs/features/software-templates/migrating-to-rjsf-v5.md @@ -44,7 +44,7 @@ It's possible that if you have a hard dependency on any of the `@rjsf/*` librari /* highlight-remove-next-line */ import { FieldValidation } from '@rjsf/core'; /* highlight-add-next-line */ -import { FieldValidation } from '@rjsf/utils; +import { FieldValidation } from '@rjsf/utils'; ``` ## Escape hatch diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md index 98457d2e8d..00a171523c 100644 --- a/docs/features/software-templates/writing-custom-actions.md +++ b/docs/features/software-templates/writing-custom-actions.md @@ -43,6 +43,7 @@ After running the command, the CLI will create a new directory with your new sca Let's create a simple action that adds a new file and some contents that are passed as `input` to the function. Within the generated directory, locate the file at `src/actions/example/example.ts`. Feel free to rename this file along with its generated unit test. We will replace the existing placeholder code with our custom action code as follows: ```ts title="With Zod" +import { resolveSafeChildPath } from '@backstage/backend-plugin-api'; import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; import fs from 'fs-extra'; import { z } from 'zod'; @@ -62,7 +63,7 @@ export const createNewFileAction = () => { async handler(ctx) { await fs.outputFile( - `${ctx.workspacePath}/${ctx.input.filename}`, + resolveSafeChildPath(ctx.workspacePath, ctx.input.filename), ctx.input.contents, ); }, @@ -90,6 +91,7 @@ The `createTemplateAction` takes an object which specifies the following: You can also choose to define your custom action using JSON schema instead of `zod`: ```ts title="With JSON Schema" +import { resolveSafeChildPath } from '@backstage/backend-plugin-api'; import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; import { writeFile } from 'fs'; @@ -118,7 +120,7 @@ export const createNewFileAction = () => { async handler(ctx) { const { signal } = ctx; await writeFile( - `${ctx.workspacePath}/${ctx.input.filename}`, + resolveSafeChildPath(ctx.workspacePath, ctx.input.filename), ctx.input.contents, { signal }, _ => {}, @@ -193,7 +195,7 @@ const scaffolderModuleCustomExtensions = createBackendModule({ /* highlight-add-end */ const backend = createBackend(); -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +backend.add(import('@backstage/plugin-scaffolder-backend')); /* highlight-add-next-line */ backend.add(scaffolderModuleCustomExtensions); ``` diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index 13dbe6da4b..e5cd7d13b7 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -801,34 +801,33 @@ The `projectSlug` filter generates a project slug from a repository URL - **Input**: `github.com?repo=backstage&org=backstage` - **Output**: `backstage/backstage` -## Custom Filters +## Custom Filters and Globals -Whenever it is needed to extend the built-in filters with yours `${{ parameters.name | my-filter1 | my-filter2 | etc }}`, then you can add them -using the property `additionalTemplateFilters`. +You may wish to extend the filters and globals with your own custom ones. For example `${{ myGlobal | myFilter | myOtherFilter }}` or `${{ myFunctionGlobal(1,2) | myFilter }}`. +This can be achieved using the `additionalTemplateFilters` and `additionalTemplateGlobals` properties respectively. -The `additionalTemplateFilters` property accepts as type a `Record` +These properties accept a `Record` -```ts title="plugins/scaffolder-backend/src/service/Router.ts" +```ts title="plugins/scaffolder-backend/src/service/router.ts" additionalTemplateFilters?: Record; + additionalTemplateGlobals?: Record; ``` -where the first parameter is the name of the filter and the second receives a list of `JSON value` arguments. The `templateFilter()` function must return a JsonValue which is either a Json array, object or primitive. +where the first parameter is the identifier of the filter or global and the second is a `TemplateFilter` or a `TemplateGlobal` respectively. +A `TemplateFilter` is a function which will be called using the previous `JsonValue` objects and may return a `JsonValue` object. +A `TemplateGlobal` can either be a function which will be called using the passed `JsonValue` objects and may return a `JsonValue` object or it can be a `JsonValue` object itself. ```ts title="plugins/scaffolder-node/src/types.ts" export type TemplateFilter = (...args: JsonValue[]) => JsonValue | undefined; + +export type TemplateGlobal = + | ((...args: JsonValue[]) => JsonValue | undefined) + | JsonValue; ``` -From a practical coding point of view, you will translate that into the following snippet code handling 2 filters: +**Usage Example** -```ts" -... -additionalTemplateFilters: { - base64: (...args: JsonValue[]) => btoa(args.join("")), - betterFilter: (...args: JsonValue[]) => { return `This is a much better string than "${args}", don't you think?` } -} -``` - -And within your template, you will be able to use the filters using a parameter and the filter passed using the pipe symbol +Given you want to have the following filters and globals available in you template: ```yaml apiVersion: scaffolder.backstage.io/v1beta3 @@ -840,22 +839,21 @@ spec: owner: user:guest type: service - parameters: - - title: Test custom filters - properties: - userName: - title: Name of the user - type: string - steps: - - id: debug - name: debug + - id: debug1 + name: debug1 action: debug:log input: - message: ${{ parameters.userName | betterFilter | base64 }} + message: ${{ myGlobal | myFilter | myOtherFilter }} + + - id: debug2 + name: debug2 + action: debug:log + input: + message: ${{ myFunctionGlobal(1,2) | myFilter }} ``` -Next, you will have to register the property `addTemplateFilters` using the `scaffolderTemplatingExtensionPoint` of a new `BackendModule` [created](../../backend-system/architecture/06-modules.md). +You will have to create a new [`BackendModule`](../../backend-system/architecture/06-modules.md) using the `scaffolderTemplatingExtensionPoint`. Here is a very simplified example of how to do that: @@ -876,11 +874,13 @@ const scaffolderModuleCustomFilters = createBackendModule({ // ... and other dependencies as needed }, async init({ scaffolder /* ..., other dependencies */ }) { + scaffolder.addTemplateGlobals({ + myGlobal: () => 'myGlobal', + myFunctionGlobal: (...args: JsonValue[]) => args[0] + args[1], + }); scaffolder.addTemplateFilters({ - base64: (...args: JsonValue[]) => btoa(args.join('')), - betterFilter: (...args: JsonValue[]) => { - return `This is a much better string than "${args}", don't you think?`; - }, + myFilter: () => 'the value is this now', + myOtherFilter: (...args: JsonValue[]) => args.join(''), }); }, }); @@ -889,9 +889,9 @@ const scaffolderModuleCustomFilters = createBackendModule({ /* highlight-add-end */ const backend = createBackend(); -backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +backend.add(import('@backstage/plugin-scaffolder-backend')); /* highlight-add-next-line */ -backend.add(scaffolderModuleCustomFilters()); +backend.add(scaffolderModuleCustomFilters); ``` If you still use the legacy backend system, then you will use the `createRouter()` function of the `Scaffolder plugin` @@ -908,10 +908,16 @@ export default async function createPlugin({ additionalTemplateFilters: { - } + }, + additionalTemplateGlobals: { + + }, }); +} ``` +Note that additional template global functions are currently not supported in `fetch:template` (see #25445). + ## Template Editor Writing template is most of the times an iterative process. You will need to test your template to make sure it has a good user experience and that it works as expected. To help on this process the scaffolder comes with a build in template editor that allows you to test your template in a real environment for querying data and execute the actions on dry-run mode to see the results of those one. @@ -947,3 +953,19 @@ Have in mind that changes in this form will not be saved on the template and is ### Custom Field Explorer The custom filed explorer allows you to select any custom field loaded on the backstage instance and test different values and configurations. + +## Presentation + +You can configure the text of the "Back", "Review", and "Create" buttons using the `spec.presentation` field of your Software Template. You might want have a Template that doesn't "Create" something but rather "Updates" it. This feature will allow you to change it as needed. Here's an example of how to use this: + +```yaml +--- +spec: + owner: scaffolder/maintainers + type: website + presentation: + buttonLabels: + backButtonText: 'Return' + createButtonText: 'Update' + reviewButtonText: 'Verify' +``` diff --git a/docs/features/techdocs/extensions.md b/docs/features/techdocs/extensions.md new file mode 100644 index 0000000000..6c69d076a4 --- /dev/null +++ b/docs/features/techdocs/extensions.md @@ -0,0 +1,62 @@ +--- +id: extensions +title: Using TechDocs Extensions +sidebar_label: Using TechDocs Extensions +description: How to use the built-in TechDocs extension points +--- + +# TechDocs Backend Extensions + +The TechDocs backend plugin provides the following extension points: + +- `techdocsPreparerExtensionPoint` + - Register a custom docs [PreparerBase extension](https://backstage.io/docs/reference/plugin-techdocs-node.preparerbase/) + - Ideal for when you want a custom type of docs created for a specific entity type +- `techdocsBuildsExtensionPoint` + - Allows overriding the build phase Winston log transport (by default does not log to console) + - Allows overriding the [DocsBuildStrategy](https://backstage.io/docs/reference/plugin-techdocs-node.docsbuildstrategy/) +- `techdocsPublisherExtensionPoint` + - Register a custom docs publisher +- `techdocsGeneratorExtensionPoint` + - Register a custom [TechdocsGenerator](https://backstage.io/docs/reference/plugin-techdocs-node.techdocsgenerator/) + +Extension points are exported from `@backstage/plugin-techdocs-backend`. + +## Examples + +### Log TechDocs Build phase details to console + +By default, the TechDocs build phase logs to the UI, but does not log to the console. However, the +`techdocsBuildsExtensionPoint` can be used to setup a custom Winston transport for TechDocs build logs. + +Here is an example of logging to console: + +```typescript jsx title="packages/backend/src/extensions/techDocsExtension.ts" +import { techdocsBuildsExtensionPoint } from '@backstage/plugin-techdocs-backend'; +import { createBackendModule } from '@backstage/backend-plugin-api'; +import { transports } from 'winston'; + +export const techDocsExtension = createBackendModule({ + pluginId: 'techdocs', + moduleId: 'techdocs-build-log-transport-extension', + register(env) { + env.registerInit({ + deps: { + build: techdocsBuildsExtensionPoint, + }, + async init({ build }) { + // You can obviously use any custom transport here... + build.setBuildLogTransport(new transports.Console()); + }, + }); + }, +}); +``` + +And then of course register this extension with the backend: + +```typescript jsx title="packages/backend/src/index.ts" +import {techDocsExtension} from "./extensions/techDocsExtension"; +... +backend.add(techDocsExtension); +``` diff --git a/docs/features/techdocs/getting-started.md b/docs/features/techdocs/getting-started.md index a157d29c0d..66772c861d 100644 --- a/docs/features/techdocs/getting-started.md +++ b/docs/features/techdocs/getting-started.md @@ -209,7 +209,7 @@ const backend = createBackend(); // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-techdocs-backend/alpha')); +backend.add(import('@backstage/plugin-techdocs-backend')); /* highlight-add-end */ backend.start(); diff --git a/docs/features/techdocs/how-to-guides.md b/docs/features/techdocs/how-to-guides.md index e47af8d1d7..fd4d208b74 100644 --- a/docs/features/techdocs/how-to-guides.md +++ b/docs/features/techdocs/how-to-guides.md @@ -799,8 +799,8 @@ const techdocsCustomBuildStrategy = createBackendModule({ // Other plugins... /* highlight-add-start */ -backend.add(import('@backstage/plugin-techdocs-backend/alpha')); -backend.add(techdocsCustomBuildStrategy()); +backend.add(import('@backstage/plugin-techdocs-backend')); +backend.add(techdocsCustomBuildStrategy); /* highlight-add-end */ backend.start(); @@ -874,3 +874,23 @@ metadata: TechDocs supports using the [mkdocs-redirects](https://github.com/mkdocs/mkdocs-redirects/tree/master) plugin to create a redirect map for any TechDocs site. This allows broken links from renamed or moved pages in your site to be redirected to their specified replacement. TechDocs will notify the user that the page they are trying to access is no longer maintained. Then, they will be redirected. External site redirects are not supported. If an external redirect is provided, the user will instead be redirected to the index page of the documentation site. + +## Create download links for static assets + +You may want to make files available for download by your users such as PDF +documents, images, or code templates. Download links for files included in your +docs directory can be made by adding `{: download }` after a markdown link. + +``` +[Link text](https://example.com/foo.jpg){: download } +``` + +The user's browser will download the file as `download.jpg` when the link is +clicked. + +Specify a file name to control the name the file will be given when it is +downloaded: + +``` +[Link text](https://example.com/foo.jpg){: download="foo.jpg" } +``` diff --git a/docs/features/techdocs/using-cloud-storage.md b/docs/features/techdocs/using-cloud-storage.md index 6ba826ea62..bdafb3532c 100644 --- a/docs/features/techdocs/using-cloud-storage.md +++ b/docs/features/techdocs/using-cloud-storage.md @@ -120,6 +120,36 @@ techdocs: Your Backstage app is now ready to use Google Cloud Storage for TechDocs, to store and read the static generated documentation files. +### Extending default Storage configuration + +If you need a non-standard configuration of Google Cloud Storage client, +`TechdocsPublisherExtensionPoint` is something you should look at. +You can register custom `StorageOptions` that will be used to configure the client. To do so, you +need to register publisher settings inside your module init, like in the following example: + +```typescript +export const gcsPublisherCustomizer = createBackendModule({ + pluginId: 'techdocs', + moduleId: 'gcs-publisher-customizer', + register(reg) { + reg.registerInit({ + deps: { + techdocsExtensionPoint: techdocsPublisherExtensionPoint, + }, + async init({ techdocsExtensionPoint }) { + const customOptions: StorageOptions = { + userAgent: 'my-custom-user-agent', + }; + techdocsExtensionPoint.registerPublisherSettings( + 'googleGcs', + customOptions, + ); + }, + }); + }, +}); +``` + ## Configuring AWS S3 Bucket with TechDocs **1. Set `techdocs.publisher.type` config in your `app-config.yaml`** diff --git a/docs/frontend-system/architecture/00-index.md b/docs/frontend-system/architecture/00-index.md index 8585eb76fc..20a12ba1e8 100644 --- a/docs/frontend-system/architecture/00-index.md +++ b/docs/frontend-system/architecture/00-index.md @@ -18,7 +18,7 @@ Regardless of whether you are setting up your own backstage instance, developing plugins, or extending plugins with new features, it is important to understand these concepts. -The diagram below provides an overview of the different building blocks, and the other blocks that each of them interact with. +The diagram below provides an overview of the different building blocks and the other blocks that each of them interacts with. ![frontend system building blocks diagram](../../assets/frontend-system/architecture-building-blocks.drawio.svg) @@ -28,11 +28,11 @@ This is the app instance itself that you create and use as the root of your Back ### Extensions -Extensions are the building blocks that build out both the visual and non-visual structure of the application. There are both built-in extensions provided by the app itself, as well as extensions provided by plugins. Each extension is attached to a parent with which it shares data, and can have any number of children of its own. It is up to the app to wire together all extensions into a single tree known as the app extension tree. It is from this structure that the entire app can then be instantiated and rendered. +Extensions are the building blocks that build out both the visual and non-visual structure of the application. There are both built-in extensions provided by the app itself as well as extensions provided by plugins. Each extension is attached to a parent with which it shares data and can have any number of children of its own. It is up to the app to wire together all extensions into a single tree known as the app extension tree. It is from this structure that the entire app can then be instantiated and rendered. ### Plugins -Plugins provide the actual features inside an app. The size of a plugin can range from a tiny component to an entire new system in which other plugins can be composed and integrated. Plugins can be completely standalone, or build on top of each other to extend existing plugins and augment their features. Plugins can communicate with each other by composing their extensions, or by sharing Utility APIs and routes. +Plugins provide the actual features inside an app. The size of a plugin can range from a tiny component to an entire new system in which other plugins can be composed and integrated. Plugins can be completely standalone or built on top of each other to extend existing plugins and augment their features. Plugins can communicate with each other by composing their extensions or by sharing Utility APIs and routes. ### Extension Overrides @@ -40,11 +40,11 @@ In addition to the built-in extensions and extensions provided by plugins, it is ### Utility APIs -Utility APIs provide functionality that makes it easier to build plugins, make it possible for plugins to share functionality with other plugins, as well as serve as a customization point for integrators to change the behavior of the app. Each Utility API is defined by a TypeScript interface as well as a reference used to access the implementations. The implementations of Utility APIs are defined by extensions that are provided and can be overridden the same as any other extension. +Utility APIs provide functionality that makes it easier to build plugins, make it possible for plugins to share functionality with other plugins, as well as serve as a customization point for integrators to change the behaviour of the app. Each Utility API is defined by a TypeScript interface as well as a reference used to access the implementations. The implementations of Utility APIs are defined by extensions that are provided and can be overridden the same as any other extension. ### Routes -The Backstage routing system adds a layer of indirection that makes it possible for plugins to route to each other's extensions without explicit knowledge of what URL paths the extension are rendered at or if they even exist at all. It makes it possible for plugins to share routes with each other and dynamically generate concrete links at runtime. It is the responsibility of the app to resolve these links to actual URLs, but it is also possible for integrators to define their own route bindings that decide how the links should be resolved. The routing system also lets plugins define internal routes, aiding in the linking to different content in the same plugin. +The Backstage routing system adds a layer of indirection that makes it possible for plugins to route to each other's extensions without explicit knowledge of what URL paths the extensions are rendered at or if they even exist at all. It makes it possible for plugins to share routes with each other and dynamically generate concrete links at runtime. It is the responsibility of the app to resolve these links to actual URLs, but it is also possible for integrators to define their own route bindings that decide how the links should be resolved. The routing system also lets plugins define internal routes, aiding in the linking to different content in the same plugin. ## Package structure diff --git a/docs/frontend-system/architecture/25-extension-overrides.md b/docs/frontend-system/architecture/25-extension-overrides.md index 785843f6e0..faaf446f41 100644 --- a/docs/frontend-system/architecture/25-extension-overrides.md +++ b/docs/frontend-system/architecture/25-extension-overrides.md @@ -79,6 +79,48 @@ const myOverrideExtension = myExtension.override({ Note the `yield*` expression, which forwards all values from the provided iterable to the generator, in this case the original factory output. +## Overriding blueprint parameters + +If you are overriding an extension that was originally created from an [extension blueprint](./23-extension-blueprints.md), you are able to override the parameters that were originally provided for the blueprint. This can be done directly as an option to `.override`, or when calling the original factory in the override factory. The provided parameter overrides will be merged with the existing parameters that where provided when creating the extension from the blueprint. + +For example, consider the following extension created from the `PageBlueprint`: + +```tsx +const exampleExtension = PageBlueprint.make({ + params: { + loader: () => + import('./components/ExamplePage').then(m => ), + defaultPath: '/example', + }, +}); +``` + +You can immediately override parameters through the `params` option: + +```tsx +const overrideExtension = exampleExtension.override({ + params: { + loader: () => + import('./components/OverridePage').then(m => ), + }, +}); +``` + +It is also possible to pass parameter overrides when calling the original factory in the override factory: + +```tsx +const overrideExtension = exampleExtension.override({ + factory(originalFactory) { + return originalFactory({ + params: { + loader: () => + import('./components/OverridePage').then(m => ), + }, + }); + }, +}); +``` + ## Overriding declared outputs When overriding an extension you can provide a new output declaration. This **replaces** any existing output declaration, which means that if you want to forward any of the original output you will need to declare it again. The following example shows how to override an extension and replace the output declaration: @@ -263,23 +305,19 @@ const overrideExtension = exampleExtension.override({ To install extension overrides in a Backstage app you should use `plugin.withOverrides` whenever you are overriding or adding extensions for a plugin. See the section on [overriding a plugin](./15-plugins.md#overriding-a-plugin) for more information. -There is also a `createExtensionOverrides` function that can be used to install a collection of standalone extensions in an app. This method will be replaced with a different mechanism in the future, but for now remains the only way to override the built-in extensions in the app or to package extensions for a plugin package separate from the plugin itself. - Note that while using either of these options you don't necessarily need to use the extension `.override(...)` method to create the overrides. You can also create new extensions with `createExtension` or a blueprint that are either completely net-new extensions, or override an existing extension by using the same `kind`, `namespace` and `name` to produce the same extension ID. -### Creating a standalone extension bundle +### Creating a frontend module -The following example shows how to create a standalone extension bundle that overrides the search page from the search plugin: +The following example shows how to create a frontend module that overrides the search page from the search plugin: ```tsx import { createPageExtension, - createExtensionOverrides, + createFrontendModule, } from '@backstage/frontend-plugin-api'; const customSearchPage = PageBlueprint.make({ - // Since this is a standalone extension we need to provide the namespace to match the search plugin - namespace: 'search', params: { defaultPath: '/search', loader: () => @@ -287,7 +325,8 @@ const customSearchPage = PageBlueprint.make({ }, }); -export default createExtensionOverrides({ +export default createFrontendModule({ + pluginId: 'search', extensions: [customSearchPage], }); ``` @@ -296,12 +335,14 @@ Assuming the above code resides in the `@internal/search-page` package, you can ```tsx title="packages/app/src/App.tsx" import { createApp } from '@backstage/frontend-defaults'; -import searchPageOverride from '@internal/search-page'; +import searchPageModule from '@internal/search-page'; const app = createApp({ // highlight-next-line - features: [searchPageOverride], + features: [searchPageModule], }); export default app.createRoot(); ``` + +You must define a `pluginId` when creating a frontend module, and the plugin must also be installed for the module to be loaded. diff --git a/docs/frontend-system/architecture/36-routes.md b/docs/frontend-system/architecture/36-routes.md index 2a9b372b1c..8ed3024edd 100644 --- a/docs/frontend-system/architecture/36-routes.md +++ b/docs/frontend-system/architecture/36-routes.md @@ -251,6 +251,8 @@ app: # point to the Catalog details page when the Scaffolder component details ref is used # highlight-next-line scaffolder.componentDetails: catalog.details + # explicitly disable the default route binding from the scaffolder to the catalog import page + scaffolder.registerComponent: false ``` We also have the ability to express this in code as an option to `createApp`, but you of course only need to use one of these two methods: @@ -268,6 +270,7 @@ const app = createApp({ }); bind(scaffolder.externalRoutes, { componentDetails: catalog.routes.details, + registerComponent: false, }); }, // highlight-end diff --git a/docs/frontend-system/architecture/60-migrations.md b/docs/frontend-system/architecture/60-migrations.md index a1ab0197f7..9e84899dc2 100644 --- a/docs/frontend-system/architecture/60-migrations.md +++ b/docs/frontend-system/architecture/60-migrations.md @@ -14,6 +14,94 @@ This section provides migration guides for different versions of the frontend sy This guide is intended for app and plugin authors who have already migrated their code to the new frontend system, and are looking to keep it up to date with the latest changes. These guides do not cover trivial migrations that can be explained in a deprecation message, such as a renamed export. +## 1.31 + +### `namespace` parameter should be removed + +The `namespace` parameter to all `createExtension`, `createExtensionBlueprint` or any `.make()` or `.makeWithOverrides()` method can be removed. This will now default to the `id` of the `plugin` which should already be the case. + +### `createExtensionOverrides` -> `createFrontendModule` + +Extensions will need to be wrapped in a module in order to be installed in the frontend. This means that the `createExtensionOverrides` function should be replaced with `createFrontendModule`, and the `pluginId` parameter should be set with the target `pluginId` that you're overriding. + +For example: + +```tsx +import { + createPageExtension, + createExtensionOverrides, +} from '@backstage/frontend-plugin-api'; + +const customSearchPage = PageBlueprint.make({ + namespace: 'search', + params: { + defaultPath: '/search', + loader: () => + import('./CustomSearchPage').then(m => ), + }, +}); + +export default createExtensionOverrides({ + extensions: [customSearchPage], +}); +``` + +Should now look like this: + +```tsx +import { + createPageExtension, + createFrontendModule, +} from '@backstage/frontend-plugin-api'; + +const customSearchPage = PageBlueprint.make({ + params: { + defaultPath: '/search', + loader: () => + import('./CustomSearchPage').then(m => ), + }, +}); + +export default createFrontendModule({ + pluginId: 'search', + extensions: [customSearchPage], +}); +``` + +### Moved `createApp` + +The `createApp` function has been moved to the new `@backstage/frontend-defaults` package. The old export from `@backstage/frontend-app-api` is now deprecated and should be replaced with the new one. + +### Removed support for "v1" extensions + +Extensions created with `@backstage/frontend-plugin-api` from before the 1.30 release are no longer supported by `createApp`. To be able to use extensions in a new app, they need to be created with `@backstage/frontend-plugin-api` version 0.7.0 or later. + +### New type parameters for `ExtensionDefinition` and `ExtensionBlueprint` + +The type parameters of `ExtensionDefinition` and `ExtensionBlueprint` have been updated to use a single type parameter with an object, in order to make them easier to read and evolve. + +Existing usage can generally be updated as follows: + +`ExtensionDefinition` -> `ExtensionDefinition` +`ExtensionDefinition` -> `ExtensionDefinition` +`ExtensionDefinition` -> `ExtensionDefinition<{ config: TConfig }>` +`ExtensionDefinition` -> `ExtensionDefinition<{ config: TConfig, configInput: TConfigInput }>` + +If you need to infer the parameter you can use `ExtensionDefinitionParameters` and `ExtensionBlueprintParameters`, for example: + +```tsx +import { + ExtensionDefinition, + ExtensionDefinitionParameters, +} from '@backstage/frontend-plugin-api'; + +function myUtility( + ext: ExtensionDefinition, +): T['config'] { + // ... +} +``` + ## 1.30 ### Reworked extension inputs and outputs diff --git a/docs/frontend-system/building-apps/08-migrating.md b/docs/frontend-system/building-apps/08-migrating.md index 96e7dd2bd5..6efd0c7841 100644 --- a/docs/frontend-system/building-apps/08-migrating.md +++ b/docs/frontend-system/building-apps/08-migrating.md @@ -95,7 +95,7 @@ At this point the contents of your app should be past the initial migration stag ## Migrating `createApp` Options -Many of the `createApp` options have been migrated to use extensions instead. Each will have their own [extension blueprint](../architecture/23-extension-blueprints.md) that you use to create a custom extension. To add these standalone extensions to the app they need to be passed to `createExtensionOverrides`, which bundles them into a _feature_ that you can install in the app. See the [standalone extensions](../architecture/25-extension-overrides.md#creating-a-standalone-extension-bundle) section for more information. +Many of the `createApp` options have been migrated to use extensions instead. Each will have their own [extension blueprint](../architecture/23-extension-blueprints.md) that you use to create a custom extension. To add these standalone extensions to the app they need to be passed to `createFrontendModule`, which bundles them into a _feature_ that you can install in the app. See the [frontend module](../architecture/25-extension-overrides.md#creating-a-frontend-module) section for more information. For example, assuming you have a `lightTheme` extension that you want to add to your app, you can use the following: @@ -103,7 +103,8 @@ For example, assuming you have a `lightTheme` extension that you want to add to const app = createApp({ features: [ // highlight-add-start - createExtensionOverrides({ + createFrontendModule({ + pluginId: 'app', extensions: [lightTheme], }), // highlight-add-end @@ -287,6 +288,7 @@ const app = createApp({ ), }, ], +}); ``` Can be converted to the following extension: @@ -342,7 +344,8 @@ const exampleIconBundle = IconBundleBlueprint.make({ const app = createApp({ features: [ - createExtensionOverrides({ + createFrontendModule({ + pluginId: 'app', extensions: [exampleIconBundle], }), ], @@ -567,7 +570,8 @@ Here is an example converting the `CustomAppBarrier` into extension: createApp({ // ... features: [ - createExtensionOverrides({ + createFrontendModule({ + pluginId: 'app', extensions: [ AppRootWrapperBlueprint.make({ name: 'custom-app-barrier', diff --git a/docs/frontend-system/building-plugins/03-common-extension-blueprints.md b/docs/frontend-system/building-plugins/03-common-extension-blueprints.md index 5193fd85b1..d08de7012d 100644 --- a/docs/frontend-system/building-plugins/03-common-extension-blueprints.md +++ b/docs/frontend-system/building-plugins/03-common-extension-blueprints.md @@ -50,14 +50,14 @@ Translation extension provide custom translation messages for the app. They can These are the [extension blueprints](../architecture/23-extension-blueprints.md) provided by the Backstage core feature plugins. -### EntityCard - [Reference](https://github.com/backstage/backstage/blob/master/plugins/catalog-react/api-report-alpha.md) +### EntityCard - [Reference](https://github.com/backstage/backstage/blob/master/plugins/catalog-react/report-alpha.api.md) Creates entity cards to be displayed on the entity pages of the catalog plugin. Exported as `EntityCardBlueprint`. -### EntityContent - [Reference](https://github.com/backstage/backstage/blob/master/plugins/catalog-react/api-report-alpha.md) +### EntityContent - [Reference](https://github.com/backstage/backstage/blob/master/plugins/catalog-react/report-alpha.api.md) Creates entity content to be displayed on the entity pages of the catalog plugin. Exported as `EntityContentBlueprint`. -### SearchResultListItem - [Reference](https://github.com/backstage/backstage/blob/master/plugins/search-react/api-report-alpha.md) +### SearchResultListItem - [Reference](https://github.com/backstage/backstage/blob/master/plugins/search-react/report-alpha.api.md) Creates search result list items for different types of search results, to be displayed in search result lists. Exported as `SearchResultListItemBlueprint`. diff --git a/docs/frontend-system/utility-apis/04-configuring.md b/docs/frontend-system/utility-apis/04-configuring.md index e403104506..4847fc6eaf 100644 --- a/docs/frontend-system/utility-apis/04-configuring.md +++ b/docs/frontend-system/utility-apis/04-configuring.md @@ -41,13 +41,14 @@ Like with other extension types, you replace Utility APIs with your own custom i ```tsx title="in your app" /* highlight-add-start */ -import { createExtensionOverrides } from '@backstage/frontend-plugin-api'; +import { createFrontendModule } from '@backstage/frontend-plugin-api'; class CustomWorkImpl implements WorkApi { /* ... */ } -const myOverrides = createExtensionOverrides({ +const workModule = createFrontendModule({ + pluginId: 'work', extensions: [ ApiBlueprint.make({ params: { @@ -66,7 +67,7 @@ export default createApp({ features: [ // ... other features /* highlight-add-next-line */ - myOverrides, + workModule, ], }); ``` diff --git a/docs/getting-started/app-custom-theme.md b/docs/getting-started/app-custom-theme.md index 4c013440da..1bff5b1eb0 100644 --- a/docs/getting-started/app-custom-theme.md +++ b/docs/getting-started/app-custom-theme.md @@ -48,6 +48,8 @@ import { createApp } from '@backstage/app-defaults'; import { ThemeProvider } from '@material-ui/core/styles'; import CssBaseline from '@material-ui/core/CssBaseline'; import LightIcon from '@material-ui/icons/WbSunny'; +import { UnifiedThemeProvider} from '@backstage/theme'; +import { myTheme } from './themes/myTheme'; const app = createApp({ apis: ..., diff --git a/docs/getting-started/config/authentication.md b/docs/getting-started/config/authentication.md index 5d0262c682..2442d2b767 100644 --- a/docs/getting-started/config/authentication.md +++ b/docs/getting-started/config/authentication.md @@ -8,7 +8,7 @@ Audience: Admins or Developers ## Summary -We'll be walking you through how to setup authentication for your Backstage app using Github. After finishing this guide, you'll have both working authentication and users in your Backstage app to match to the users logging in! +We'll be walking you through how to setup authentication for your Backstage app using GitHub. After finishing this guide, you'll have both working authentication and users in your Backstage app to match to the users logging in! There are multiple authentication providers available for you to use with Backstage, feel free to follow [their instructions for adding authentication](../../auth/index.md). diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 8bb30d1db8..0d5529f611 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -23,11 +23,11 @@ If you are planning to contribute a new feature or bug fix to the Backstage proj This guide assumes a basic understanding of working on a Linux based operating system and have some experience with the terminal, specifically, these commands: `npm`, `yarn`. -- Access to a Unix-based operating system, such as Linux, MacOS or +- Access to a Unix-based operating system, such as Linux, macOS or [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/) - A GNU-like build environment available at the command line. For example, on Debian/Ubuntu you will want to have the `make` and `build-essential` packages installed. - On MacOS, you will want to have run `xcode-select --install` to get the XCode command line build tooling in place. + On macOS, you will want to have run `xcode-select --install` to get the XCode command line build tooling in place. - An account with elevated rights to install the dependencies - `curl` or `wget` installed - Node.js [Active LTS Release](https://nodejs.org/en/about/previous-releases) installed using one of these @@ -111,7 +111,7 @@ If this fails on the `yarn install` step, it's likely that you will need to inst ## 2. Run the Backstage app -You Backstage app is fully installed and ready to be run! Now that the installation is complete, you can go to the application directory and start the app using the `yarn dev` command. The `yarn dev` command will run both the frontend and backend as separate processes (named `[0]` and `[1]`) in the same window. +Your Backstage app is fully installed and ready to be run! Now that the installation is complete, you can go to the application directory and start the app using the `yarn dev` command. The `yarn dev` command will run both the frontend and backend as separate processes (named `[0]` and `[1]`) in the same window. ```bash cd my-backstage-app # your app name diff --git a/docs/getting-started/logging-in.md b/docs/getting-started/logging-in.md index 7d6fb5d55b..16596865a2 100644 --- a/docs/getting-started/logging-in.md +++ b/docs/getting-started/logging-in.md @@ -12,7 +12,7 @@ This guide will provide a quick tutorial on how to log in to your Backstage inst ## Prerequisites -You should have already [have a standalone app](./index.md) and completed the Github OAuth app setup defined in [the authentication tutorial](./config/authentication.md). +You should have already [have a standalone app](./index.md) and completed the GitHub OAuth app setup defined in [the authentication tutorial](./config/authentication.md). ## 1. Login to Backstage @@ -22,13 +22,13 @@ If you're not already logged in, you should see a login screen like this, ![Screenshot of the login screen](../assets/getting-started/login-screen.png) -To login, you should choose the "Github" provider and click the "Sign in" button. This will redirect you to a Github OAuth page. Verify that the scopes mentioned on that page match the setup you did in [the authentication tutorial](./config/authentication.md). Once you click "Confirm", you will be brought back to the Backstage interface and signed in! +To login, you should choose the "GitHub" provider and click the "Sign in" button. This will redirect you to a GitHub OAuth page. Verify that the scopes mentioned on that page match the setup you did in [the authentication tutorial](./config/authentication.md). Once you click "Confirm", you will be brought back to the Backstage interface and signed in! If you are already logged in, you will be automatically brought to your Backstage instance. ## 2. Verify that you're logged in -Once you've logged in, find the "Settings" item in the navigation bar to the left. Click it and you will see your profile. If you see your profile picture and name from Github here, congratulations! You've successfully set up a Github authentication integration. +Once you've logged in, find the "Settings" item in the navigation bar to the left. Click it and you will see your profile. If you see your profile picture and name from GitHub here, congratulations! You've successfully set up a GitHub authentication integration. diff --git a/docs/integrations/aws-s3/discovery.md b/docs/integrations/aws-s3/discovery.md index 4cca448cf2..f4d18015a2 100644 --- a/docs/integrations/aws-s3/discovery.md +++ b/docs/integrations/aws-s3/discovery.md @@ -73,8 +73,8 @@ yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-aws Then update your backend by adding the following line: ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-aws/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-aws')); /* highlight-add-end */ ``` diff --git a/docs/integrations/azure/discovery.md b/docs/integrations/azure/discovery.md index 357df7d553..e64bf42636 100644 --- a/docs/integrations/azure/discovery.md +++ b/docs/integrations/azure/discovery.md @@ -109,8 +109,8 @@ yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-azure Then updated your backend by adding the following line: ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-azure/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-azure')); /* highlight-add-end */ ``` diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index 1868188cdf..e6fb69a520 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -49,9 +49,9 @@ For large organizations, this plugin can take a long time, so be careful setting Finally, updated your backend by adding the following line: ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-msgraph/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-msgraph')); /* highlight-add-end */ ``` diff --git a/docs/integrations/bitbucketCloud/discovery.md b/docs/integrations/bitbucketCloud/discovery.md index 6ba9c0aa1f..b000a45ccd 100644 --- a/docs/integrations/bitbucketCloud/discovery.md +++ b/docs/integrations/bitbucketCloud/discovery.md @@ -27,15 +27,11 @@ yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-bitbuck ```ts // optional if you want HTTP endpoints to receive external events -// backend.add(import('@backstage/plugin-events-backend/alpha')); +// backend.add(import('@backstage/plugin-events-backend')); // optional if you want to use AWS SQS instead of HTTP endpoints to receive external events -// backend.add(import('@backstage/plugin-events-backend-module-aws-sqs/alpha')); -backend.add( - import('@backstage/plugin-events-backend-module-bitbucket-cloud/alpha'), -); -backend.add( - import('@backstage/plugin-catalog-backend-module-bitbucket-cloud/alpha'), -); +// backend.add(import('@backstage/plugin-events-backend-module-aws-sqs')); +backend.add(import('@backstage/plugin-events-backend-module-bitbucket-cloud')); +backend.add(import('@backstage/plugin-catalog-backend-module-bitbucket-cloud')); ``` You need to decide how you want to receive events from external sources like @@ -51,33 +47,6 @@ Further documentation: ### Installation with Legacy Backend System -#### Installation without Events Support - -And then add the entity provider to your catalog builder: - -```ts title="packages/backend/src/plugins/catalog.ts" -/* highlight-add-next-line */ -import { BitbucketCloudEntityProvider } from '@backstage/plugin-catalog-backend-module-bitbucket-cloud'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - const builder = await CatalogBuilder.create(env); - /* highlight-add-start */ - builder.addEntityProvider( - BitbucketCloudEntityProvider.fromConfig(env.config, { - logger: env.logger, - scheduler: env.scheduler, - }), - ); - /* highlight-add-end */ - - // .. -} -``` - -#### Installation with Events Support - Please follow the installation instructions at - @@ -104,19 +73,17 @@ export default async function createPlugin( env: PluginEnvironment, ): Promise { const builder = await CatalogBuilder.create(env); - builder.addProcessor(new ScaffolderEntitiesProcessor()); /* highlight-add-start */ const bitbucketCloudProvider = BitbucketCloudEntityProvider.fromConfig( env.config, { + auth: env.auth, catalogApi: new CatalogClient({ discoveryApi: env.discovery }), events: env.events, logger: env.logger, scheduler: env.scheduler, - tokenManager: env.tokenManager, }, ); - env.eventBroker.subscribe(bitbucketCloudProvider); builder.addEntityProvider(bitbucketCloudProvider); /* highlight-add-end */ const { processingEngine, router } = await builder.build(); diff --git a/docs/integrations/bitbucketServer/discovery.md b/docs/integrations/bitbucketServer/discovery.md index 3bc37e4cb5..9ba6c7a96d 100644 --- a/docs/integrations/bitbucketServer/discovery.md +++ b/docs/integrations/bitbucketServer/discovery.md @@ -29,10 +29,10 @@ yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-bitbuck And update your backend by adding the following line: ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ backend.add( - import('@backstage/plugin-catalog-backend-module-bitbucket-server/alpha'), + import('@backstage/plugin-catalog-backend-module-bitbucket-server'), ); /* highlight-add-end */ ``` diff --git a/docs/integrations/gerrit/discovery.md b/docs/integrations/gerrit/discovery.md index eca0417871..4ae1eb2344 100644 --- a/docs/integrations/gerrit/discovery.md +++ b/docs/integrations/gerrit/discovery.md @@ -27,9 +27,9 @@ yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-gerrit Then update your backend by adding the following line: ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-gerrit/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-gerrit')); /* highlight-add-end */ ``` diff --git a/docs/integrations/github/discovery.md b/docs/integrations/github/discovery.md index b2e998813d..4da7287383 100644 --- a/docs/integrations/github/discovery.md +++ b/docs/integrations/github/discovery.md @@ -31,9 +31,9 @@ yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-github And then update your backend by adding the following line: ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ -backend.add(import('@backstage/plugin-catalog-backend-module-github/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-github')); ``` ## Events Support diff --git a/docs/integrations/github/org.md b/docs/integrations/github/org.md index 61e42567a9..7f0ee1a71f 100644 --- a/docs/integrations/github/org.md +++ b/docs/integrations/github/org.md @@ -60,7 +60,7 @@ catalog: Finally, update your backend by adding the following line: ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ backend.add(import('@backstage/plugin-catalog-backend-module-github-org')); ``` @@ -167,9 +167,9 @@ const backend = createBackend(); // Other items -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); -backend.add(githubOrgModule()); +backend.add(githubOrgModule); backend.start(); ``` diff --git a/docs/integrations/gitlab/discovery.md b/docs/integrations/gitlab/discovery.md index 79bd37061a..eab590ff11 100644 --- a/docs/integrations/gitlab/discovery.md +++ b/docs/integrations/gitlab/discovery.md @@ -30,14 +30,14 @@ Then add the following to your backend initialization: ```ts title="packages/backend/src/index.ts // optional if you want HTTP endpoints to receive external events -// backend.add(import('@backstage/plugin-events-backend/alpha')); +// backend.add(import('@backstage/plugin-events-backend')); // optional if you want to use AWS SQS instead of HTTP endpoints to receive external events -// backend.add(import('@backstage/plugin-events-backend-module-aws-sqs/alpha')); +// backend.add(import('@backstage/plugin-events-backend-module-aws-sqs')); // optional - event router for gitlab. See.: https://github.com/backstage/backstage/blob/master/plugins/events-backend-module-gitlab/README.md -// backend.add(eventsModuleGitlabEventRouter()); +// backend.add(eventsModuleGitlabEventRouter); // optional - token validator for the gitlab topic -// backend.add(eventsModuleGitlabWebhook()); -backend.add(import('@backstage/plugin-catalog-backend-module-gitlab/alpha')); +// backend.add(eventsModuleGitlabWebhook); +backend.add(import('@backstage/plugin-catalog-backend-module-gitlab')); ``` You need to decide how you want to receive events from external sources like diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md index 24b64d1116..66ce117aa0 100644 --- a/docs/integrations/gitlab/org.md +++ b/docs/integrations/gitlab/org.md @@ -35,13 +35,13 @@ Then add the following to your backend initialization: ```ts title="packages/backend/src/index.ts // optional if you want HTTP endpoints to receive external events -// backend.add(import('@backstage/plugin-events-backend/alpha')); +// backend.add(import('@backstage/plugin-events-backend')); // optional if you want to use AWS SQS instead of HTTP endpoints to receive external events -// backend.add(import('@backstage/plugin-events-backend-module-aws-sqs/alpha')); +// backend.add(import('@backstage/plugin-events-backend-module-aws-sqs')); // optional - event router for gitlab. See.: https://github.com/backstage/backstage/blob/master/plugins/events-backend-module-gitlab/README.md -// backend.add(eventsModuleGitlabEventRouter()); +// backend.add(eventsModuleGitlabEventRouter); // optional - token validator for the gitlab topic -// backend.add(eventsModuleGitlabWebhook()); +// backend.add(eventsModuleGitlabWebhook); backend.add(import('@backstage/plugin-catalog-backend-module-gitlab-org')); ``` @@ -171,7 +171,10 @@ catalog: host: gitlab.com orgEnabled: true group: org/teams # Required for gitlab.com when `orgEnabled: true`. Optional for self managed. Must not end with slash. Accepts only groups under the provided path (which will be stripped) - allowInherited: true # Allow groups to be ingested even if there are no direct members. + relations: # Optional + - INHERITED # Optional. Members of any ancestor groups will also be considered members of the current group. + - DESCENDANTS # Optional. Members of any descendant groups will also be considered members of the current group. + - SHARED_FROM_GROUPS # Optional. Members of any invited groups will also be considered members of the current group. groupPattern: '[\s\S]*' # Optional. Filters found groups based on provided pattern. Defaults to `[\s\S]*`, which means to not filter anything schedule: # Same options as in SchedulerServiceTaskScheduleDefinition. Optional for the Legacy Backend System. # supports cron, ISO duration, "human duration" as used in code @@ -193,6 +196,32 @@ entities will only be ingested for the configured group, or its descendant group but not any ancestor groups higher than the configured group path. Only groups which contain members will be ingested. +### Subgroup Membership + +GitLab groups and subgroups provide a hierarchical structure for organizing projects and users. Membership in a parent group extends automatically to its subgroups, ensuring consistent permissions at all levels. Additionally, membership can be managed using invited groups, where one group can be added to another. For Backstage users integrating with GitLab, understanding this [inheritance model](https://docs.gitlab.co.jp/ee/user/group/subgroups/#subgroup-membership) and the concept of invited groups is crucial for accurately mapping and managing group and user entities. + +The `GitLabOrgDiscoveryEntityProvider` mirrors GitLab's membership behavior as follows: + +- By default, every direct member of a GitLab group is also a member of the corresponding group in Backstage. +- To include members of subgroups as members of the parent group, configure the `relations` array with the `DESCENDANTS` option. +- To include members of parent groups as members of their subgroups, configure the `relations` array with the `INHERITED` option. This also has the effect that subgroups with no direct members will not be skipped in the group ingestion process and will be added as a group entity in Backstage; +- To include members of invited groups as members of the inviting group, configure the `relations` array with the `SHARED_FROM_GROUPS` option. + +The previous `allowInherited` will be deprecated in future versions. Use the `relations` array with the `INHERITED` option instead. + +```yaml +catalog: + providers: + gitlab: + development: + relations: + - INHERITED + - DESCENDANTS + - SHARED_FROM_GROUPS +``` + +Refer to the [GitLab Group Member Relation](https://docs.gitlab.com/ee/api/graphql/reference/#groupmemberrelation) documentation for more information. + ### Users For self hosted, all `User` entities are ingested from the entire instance by default. @@ -202,6 +231,8 @@ of the top-level group for the configured group path will be ingested. In both cases (SaaS & self hosted), you can limit the ingested users to users directly assigned to the group defined in your `app-config.yaml` by setting the configuration key `restrictUsersToGroup: true`. This is especially useful when you have a large user base that you don't want to import by default. +On SaaS, you can choose to include users to be ingested that do not have a paid seat. This can be useful when using a free version of Gitlab, or when you use Guest Users on Gitlab Ultimate. Unfortunately, this will also lead to some technical users that might be imported into your user base. While project & group access tokens are filtered, service accounts will remain. [Learn more about Billable Users](https://docs.gitlab.com/ee/subscriptions/self_managed/index.html#billable-users). + ```yaml catalog: providers: @@ -210,7 +241,8 @@ catalog: host: gitlab.com ## Could also be self hosted. orgEnabled: true group: org/teams # Required for gitlab.com when `orgEnabled: true`. Optional for self managed. Must not end with slash. Accepts only groups under the provided path (which will be stripped) - restrictUsersToGroup: true # Backstage will ingest only users directly assigned to org/teams. + restrictUsersToGroup: true # Optional: Backstage will ingest only users directly assigned to org/teams. + includeUsersWithoutSeat: false # Optional: Set to true to include users without paid seat, only applicable for SaaS ``` ### Limiting `User` and `Group` entity ingestion in the provider diff --git a/docs/integrations/ldap/org.md b/docs/integrations/ldap/org.md index b1aa460bd6..50cf74ffb6 100644 --- a/docs/integrations/ldap/org.md +++ b/docs/integrations/ldap/org.md @@ -44,7 +44,7 @@ catalog: Finally, updated your backend by adding the following line: ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add(import('@backstage/plugin-catalog-backend')); /* highlight-add-start */ backend.add(import('@backstage/plugin-catalog-backend-module-ldap')); /* highlight-add-end */ diff --git a/docs/notifications/index.md b/docs/notifications/index.md index d4234b494e..ddbb156dac 100644 --- a/docs/notifications/index.md +++ b/docs/notifications/index.md @@ -196,7 +196,7 @@ notificationService.send({ }); ``` -Refer the [API documentation](https://github.com/backstage/backstage/blob/master/plugins/notifications-node/api-report.md) for further details. +Refer the [API documentation](https://github.com/backstage/backstage/blob/master/plugins/notifications-node/report.api.md) for further details. ### Signals diff --git a/docs/openapi/01-getting-started.md b/docs/openapi/01-getting-started.md index a9c70c61f8..156df9bd17 100644 --- a/docs/openapi/01-getting-started.md +++ b/docs/openapi/01-getting-started.md @@ -14,8 +14,8 @@ Difficulty: Medium The goal of this tutorial is to give you exposure to tools that more tightly couple your OpenAPI specification and plugin lifecycle. The tools we'll be presenting were created by the OpenAPI tooling project area and allow you to create, -1. A typed `express` router that provides strong guardrails during development for input and output values. Support for query, path parameters and request body, as well as experimental support for headers and cookies. -2. An auto-generated client to interact with your plugin's backend. Support for all request types, parameters and body, as well as return types. Provides a low-level interface to allow more customization by higher level libraries. +1. A typed `express` router that provides strong guardrails during development for input and output values. Support for query, path parameters, and request body, as well as experimental support for headers and cookies. +2. An auto-generated client to interact with your plugin's backend. Support for all request types, parameters, and body, as well as return types. Provides a low-level interface to allow more customization by higher-level libraries. 3. Validation and verification tooling to ensure your API and specification stay in sync. Includes testing against your unit tests. ## Prerequisites @@ -32,8 +32,8 @@ This tutorial assumes that you're already familiar with the following, There are two required npm packages before we start, -1. `@backstage/repo-tools`, this package contains all OpenAPI related commands for your plugins. We will be using this throughout the tutorial. -2. `@useoptic/optic`, this package is a dependency of `@backstage/repo-tools` but is only required for OpenAPI related commands. +1. `@backstage/repo-tools`, this package contains all OpenAPI-related commands for your plugins. We will be using this throughout the tutorial. +2. `@useoptic/optic`, this package is a dependency of `@backstage/repo-tools` but is only required for OpenAPI-related commands. Further, for generating the client a `java` binary has to be available on your PATH. @@ -47,7 +47,7 @@ You should create a new folder, `src/schema` in your backend plugin to store you ## Generating a typed express router from a spec -Run `yarn backstage-repo-tools package schema openapi generate --server` from the directory with your plugin. This will create an `openapi.generated.ts` file in the `src/schema` directory that contains the OpenAPI schema as well as a generated express router with types. You should add this command to your `package.json` for future use and you can combine both the server generation and the client generation below like so, `yarn backstage-repo-tools package schema openapi generate --server --client-package ` +Run `yarn backstage-repo-tools package schema openapi generate --server` from the directory with your plugin. This will create an `openapi.generated.ts` file in the `src/schema` directory that contains the OpenAPI schema as well as a generated express router with types. You should add this command to your `package.json` for future use, and you can combine both the server generation and the client generation below, like so, `yarn backstage-repo-tools package schema openapi generate --server --client-package ` Use it like so, update your `router.ts` or `createRouter.ts` file with the following content, @@ -86,7 +86,7 @@ export class CatalogClient implements CatalogApi { usage of the types will depend on your type names. -You should be able to use the generated `DefaultApi.client.ts` file out of the box for your API needs. For full customization, you can use a wrapper around the generated client to adjust the flavor of your clients. +You should be able to use the generated `DefaultApi.client.ts` file out of the box for your API needs. For full customization, you can use a wrapper around the generated client to adjust the flavour of your clients. For more information, see [the docs](./generate-client.md). diff --git a/docs/openapi/definitions/auth.yaml b/docs/openapi/definitions/auth.yaml index 1ed649da9c..07b18866c6 100644 --- a/docs/openapi/definitions/auth.yaml +++ b/docs/openapi/definitions/auth.yaml @@ -9,7 +9,7 @@ info: The purpose of the Auth APIs in Backstage are to identify the user, and to provide a way for plugins to request access to 3rd party services on behalf of that user. - The API is supplied with a list of providers - such as `Google` or `Github` - and will add the endpoints + The API is supplied with a list of providers - such as `Google` or `GitHub` - and will add the endpoints described below to each of those providers. Read more about [User Authentication and Authorization in Backstage](https://github.com/backstage/backstage/blob/master/docs/auth/overview.md). diff --git a/docs/overview/threat-model.md b/docs/overview/threat-model.md index 74c055a86c..2461f002c8 100644 --- a/docs/overview/threat-model.md +++ b/docs/overview/threat-model.md @@ -41,23 +41,23 @@ The built-in protection against unauthorized access does not by default include ## Common Backend Configuration -There are many common facilities that are configured centrally and available to all Backstage backend plugins. For example there is a `DatabaseManager` that provides access to a SQL database, `SchedulerService` for scheduling long-running tasks, `Logger` as a general logging facility, and `UrlReader` for reading content from external sources. These are all configured either directly in code, or within the `backend` block of the static configuration. The appropriate care needs to be taken to ensure that any secrets remain confidential and no malicious configuration is injected. +There are many common facilities that are configured centrally and available to all Backstage backend plugins. For example there is a `DatabaseService` that provides access to a SQL database, `SchedulerService` for scheduling long-running tasks, `LoggerService` as a general logging facility, and `UrlReaderService` for reading content from external sources. These are all configured either directly in code, or within the `backend` block of the static configuration. The appropriate care needs to be taken to ensure that any secrets remain confidential and no malicious configuration is injected. In a typical Backstage setup, there is no boundary between plugins that run on the same host. Likewise, there is no boundary between plugins that share the same database access. Any plugin that is running on a host that has access to the logical database of any other plugin should be considered to have full access to that other plugin. For example, even if you deploy the `auth` and `catalog` plugins on separate hosts with separate configuration and credentials, the `catalog` plugin is still considered to have full access to the `auth` plugin as long as the `catalog` plugin has access to the `auth` plugin's logical database. The only way to create a boundary between the two plugins is to deploy them in such a way that they do not have access to each others’ database. This applies to the database facility as well as any other shared resources, such as the cache. -The `UrlReader` facility is of particular interest for a secure Backstage configuration. In particular the `backend.reading.allow` configuration lists the hosts that you trust the backend to be able to read content from on behalf of users. It is extremely important that this list does not, for example, allow access to instance metadata endpoints of cloud providers, or other endpoints that your Backstage instance may have access to which contain sensitive information. In general it is recommended to keep the list minimal and only allow reading from required endpoints. The same concerns apply to custom implementations of the `UrlReader` interface, if you need to implement these through code. +The `UrlReaderService` facility is of particular interest for a secure Backstage configuration. In particular the `backend.reading.allow` configuration lists the hosts that you trust the backend to be able to read content from on behalf of users. It is extremely important that this list does not, for example, allow access to instance metadata endpoints of cloud providers, or other endpoints that your Backstage instance may have access to which contain sensitive information. In general it is recommended to keep the list minimal and only allow reading from required endpoints. The same concerns apply to custom implementations of the `UrlReader` interface, if you need to implement these through code. -Note that the `UrlReader` system operates with a service context and is not integrated with the Backstage permission system or other external access control mechanisms. This means users of your Backstage instance may be able to read external content which that individual should not have access to. For example, the `$text` placeholder in a `catalog-info.yaml` can be used to read contents from a source such as a GitHub repository that the user does not have direct access too. If this is a concern it is recommended to either disable or replace the resolvers in the catalog placeholder processor and similar features in any other plugin. +Note that the `UrlReaderService` system operates with a service context and is not integrated with the Backstage permission system or other external access control mechanisms. This means users of your Backstage instance may be able to read external content which that individual should not have access to. For example, the `$text` placeholder in a `catalog-info.yaml` can be used to read contents from a source such as a GitHub repository that the user does not have direct access too. If this is a concern it is recommended to either disable or replace the resolvers in the catalog placeholder processor and similar features in any other plugin. ## Authentication Backstage provides authentication of users through the `auth` plugin, which primarily acts as an authorization server for different OAuth 2.0 provider integrations. These integrations can both serve the purpose of signing users into Backstage, as well as providing delegated access to external resources, and are all subject to the common concerns of implementing secure OAuth 2.0 authorization servers. All auth provider integrations are disabled by default, and need to be enabled through configuration in order to be used. For each Backstage installation it is recommended to only enable the minimal set of providers that are in use by that instance. -In order to use an auth provider to sign in users into Backstage, it needs to be configured with an [Identity resolver](https://backstage.io/docs/auth/identity-resolver), which is a custom callback implemented in code. The identity resolver is a sensitive part of configuring Backstage and it is important that it always resolves user identities correctly, based on information provided by the authentication provider. There are a number of built-in identity resolvers that can simplify configuration, and it is important that these all resolve users in a secure way, regardless of how they are used. +In order to use an auth provider to sign in users into Backstage, it needs to be configured with a [sign-in resolver](https://backstage.io/docs/auth/identity-resolver). The sign-in resolver is a sensitive part of configuring Backstage and it is important that it always resolves user identities correctly, and rejects unauthorized users. There are a number of built-in sign-in resolvers that can simplify configuration, or you can implement your own custom sign-in resolver in code, either way it is very important that these resolvers map user identities correctly. You should **always use the minimum number of sign-in resolvers necessary** to avoid risk of account hijacking. Backstage also supports authentication through an authenticating reverse proxy such as [AWS ALB](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/), where the user identity is read from the incoming proxied decorated request. The following proxy auth providers verify the signature of incoming requests, and are therefore safe to deploy with direct access by users: `awsAlb`, `cfAccess`, and `gcpIap`. Providers like `oauth2Proxy` do not verify the incoming request and can therefore be spoofed by a malicious internal user to supply the `auth` backend with forged identity information. It’s therefore highly recommended to restrict access to the `oauth2Proxy` endpoints, or use a different provider. -As part of signing in with an identity resolver, a Backstage Token is issued containing the resolved user identity. The tokens are asymmetrically signed JSON Web Tokens, with the public keys available to any service that wishes to verify a token. The signing keys are rotated continuously and are unique to each installation of Backstage, meaning that Backstage Tokens are not shared across installations. The token contains claims for the user identity and ownership information, which can be used to determine what Backstage resources are owned by that user or group. It is important that this token can not be forged outside of the `auth` plugin, with the exception of other plugins deployed in the same backend service or sharing the same database. For a high-security deployment, the `auth` backend should therefore be deployed in a separate service with its own database. +As part of signing in with a sign-in resolver, a Backstage Token is issued containing the resolved user identity. The tokens are asymmetrically signed JSON Web Tokens, with the public keys available to any service that wishes to verify a token. The signing keys are rotated continuously and are unique to each installation of Backstage, meaning that Backstage Tokens are not shared across installations. The token contains claims for the user identity and ownership information, which can be used to determine what Backstage resources are owned by that user or group. It is important that this token can not be forged outside of the `auth` plugin, with the exception of other plugins deployed in the same backend service or sharing the same database. For a high-security deployment, the `auth` backend should therefore be deployed in a separate service with its own database. The token is used to prove the identity of the user within the Backstage system, and is used throughout Backstage plugins to control access. It is important that the ownership resolution logic is consistent across the entire Backstage ecosystem, with no possibility of misinterpreting the ownership information. @@ -79,7 +79,7 @@ By default all internal users are allowed to create and delete entities. If this By default, Scaffolding jobs execute directly on the host machine, including any actions defined in the template. Because the Scaffolder templates are considered a more sensitive area it is recommended to control access to create and update templates to trusted parties. Template execution is intended to be secure regardless of input, but we still recommend this additional layer of protection. The string templating is executed in a [node VM sandbox](https://github.com/laverdet/isolated-vm) to mitigate the possibility of remote code execution attacks. -The Scaffolder often has elevated permissions to for example create repositories in a Github organization. The operator should therefore be cautious of Scaffolder Templates that for example delete or update existing resources as the user input is typically user defined and can therefore delete or modify resources maliciously or by mistake. +The Scaffolder often has elevated permissions to for example create repositories in a GitHub organization. The operator should therefore be cautious of Scaffolder Templates that for example delete or update existing resources as the user input is typically user defined and can therefore delete or modify resources maliciously or by mistake. One strategy that allows you to reduce the access that the Scaffolder service has is to rely on user credentials when executing actions. For example, a GitHub App integration could be configured with read-only permissions, with a separate user OAuth token used to create repositories. This requires that your users have access to create repositories in the first place. diff --git a/docs/permissions/custom-rules.md b/docs/permissions/custom-rules.md index 9642f80215..00f4d81939 100644 --- a/docs/permissions/custom-rules.md +++ b/docs/permissions/custom-rules.md @@ -173,7 +173,7 @@ The api for providing custom rules may differ between plugins, but there should ```ts title="packages/backend/src/index.ts" // catalog plugin - backend.add(import('@backstage/plugin-catalog-backend/alpha')); + backend.add(import('@backstage/plugin-catalog-backend')); backend.add( import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), ); diff --git a/docs/permissions/getting-started.md b/docs/permissions/getting-started.md index d2c487e6ea..14058bccb0 100644 --- a/docs/permissions/getting-started.md +++ b/docs/permissions/getting-started.md @@ -34,7 +34,7 @@ To help validate the permission framework is setup we'll create a Test Permissio ```ts title="packages/backend/src/index.ts" // permission plugin - backend.add(import('@backstage/plugin-permission-backend/alpha')); + backend.add(import('@backstage/plugin-permission-backend')); /* highlight-remove-start */ backend.add( import('@backstage/plugin-permission-backend-module-allow-all-policy'), @@ -85,9 +85,9 @@ To help validate the permission framework is setup we'll create a Test Permissio ```ts title="packages/backend/src/index.ts" // permission plugin - backend.add(import('@backstage/plugin-permission-backend/alpha')); + backend.add(import('@backstage/plugin-permission-backend')); /* highlight-add-next-line */ - backend.add(import('./extensions/permissionPolicyExtension')); + backend.add(import('./extensions/permissionsPolicyExtension')); ``` You now have a Test Permission Policy in place, this will help us test that the permission framework is working in the next section. diff --git a/docs/permissions/plugin-authors/01-setup.md b/docs/permissions/plugin-authors/01-setup.md index f3c361e8b5..6ece0b0b69 100644 --- a/docs/permissions/plugin-authors/01-setup.md +++ b/docs/permissions/plugin-authors/01-setup.md @@ -14,7 +14,9 @@ The rest of this page is focused on adding the `todo-list` and `todo-list-backen ## Setup for the Tutorial -We will use a "Todo list" feature, composed of the `todo-list` and `todo-list-backend` plugins, as well as their dependency, `todo-list-common`. +**Note**: We will be updating files created as part of the [Getting Started](../getting-started.md) documentation, this tutorial assumes you have already viewed and gone through those steps! + +We are going to make a "Todo list" feature, composed of the `todo-list` and `todo-list-backend` plugins, as well as their dependency, `todo-list-common`. The source code is available here: @@ -59,7 +61,7 @@ The source code is available here: //... /* highlight-add-start */ // Installing the permission plugin - backend.add(import('@backstage/plugin-permission-backend/alpha')); + backend.add(import('@backstage/plugin-permission-backend')); // Installing the allow all permission policy module backend.add( import('@backstage/plugin-permission-backend-module-allow-all-policy'), diff --git a/docs/plugins/analytics.md b/docs/plugins/analytics.md index 10a7421057..a936a0f399 100644 --- a/docs/plugins/analytics.md +++ b/docs/plugins/analytics.md @@ -41,6 +41,7 @@ choice below. | [New Relic Browser][newrelic-browser] | Community ✅ | | [Matomo][matomo] | Community ✅ | | [Quantum Metric][qm] | Community ✅ | +| [Generic HTTP][generic-http] | Community ✅ | To suggest an integration, please [open an issue][add-tool] for the analytics tool your organization uses. Or jump to [Writing Integrations][int-howto] to diff --git a/docs/plugins/integrating-plugin-into-software-catalog.md b/docs/plugins/integrating-plugin-into-software-catalog.md index 1ec3df69cf..d47be7f4c0 100644 --- a/docs/plugins/integrating-plugin-into-software-catalog.md +++ b/docs/plugins/integrating-plugin-into-software-catalog.md @@ -54,7 +54,7 @@ To begin, you will need to import your plugin in the entities page. Located at your backstage app. ```tsx -import { MyPluginEntityContent } from '@backstage/plugin-my-plugin; +import { MyPluginEntityContent } from '@backstage/plugin-my-plugin'; ``` To add your component to the Entity view, you will need to modify the diff --git a/docs/plugins/integrating-search-into-plugins.md b/docs/plugins/integrating-search-into-plugins.md index 62b3942537..05d07feb08 100644 --- a/docs/plugins/integrating-search-into-plugins.md +++ b/docs/plugins/integrating-search-into-plugins.md @@ -227,7 +227,7 @@ import { createBackend } from '@backstage/backend-defaults'; //... const backend = createBackend(); // Installing the search backend plugin -backend.add(import('@backstage/plugin-search-backend/alpha')); +backend.add(import('@backstage/plugin-search-backend')); // Installing the newly created faq snippets collator module backend.add( import( diff --git a/docs/plugins/new-backend-system.md b/docs/plugins/new-backend-system.md index e8a2ca1b19..12525b9f95 100644 --- a/docs/plugins/new-backend-system.md +++ b/docs/plugins/new-backend-system.md @@ -101,7 +101,7 @@ export const examplePlugin = createBackendPlugin({ The plugin can then be installed in the backend using the returned plugin factory function: ```ts -backend.add(examplePlugin()); +backend.add(examplePlugin); ``` If we wanted our plugin to accept options as well, we'd accept the options as the second parameter of the register method: @@ -266,7 +266,7 @@ class GoogleCloudLogger implements LoggerService { const backend = createBackend(); // supplies additional or replacement services to the backend -backend.add(GoogleCloudLogger.factory()); +backend.add(GoogleCloudLogger.factory); ``` ## Testing diff --git a/docs/plugins/proxying.md b/docs/plugins/proxying.md index 0b64c6eb37..09afa3f519 100644 --- a/docs/plugins/proxying.md +++ b/docs/plugins/proxying.md @@ -20,7 +20,7 @@ The plugin is already added to a default Backstage project. To add it to a project, add the following line in `packages/backend/src/index.ts`: ```ts -backend.add(import('@backstage/plugin-proxy-backend/alpha')); +backend.add(import('@backstage/plugin-proxy-backend')); ``` ### Old Backend @@ -28,7 +28,7 @@ backend.add(import('@backstage/plugin-proxy-backend/alpha')); In `packages/backend/src/index.ts`: ```ts -backend.add(import('@backstage/plugin-proxy-backend/alpha')); +backend.add(import('@backstage/plugin-proxy-backend')); ``` ## Configuration diff --git a/docs/publishing.md b/docs/publishing.md index 50d78ebf09..740292949f 100644 --- a/docs/publishing.md +++ b/docs/publishing.md @@ -51,7 +51,7 @@ Additional steps for the main line release - Mention any security fixes - Create Release Notes PR - Add the release note file as [`/docs/releases/vx.y.0.md`](./releases) - - Add an entry to [`/microsite/sidebar.json`](https://github.com/backstage/backstage/blob/master/microsite/sidebars.json) for the release note + - Add an entry to [`/microsite/sidebar.js`](https://github.com/backstage/backstage/blob/master/microsite/sidebars.js) for the release note - Update the navigation bar item in [`/microsite/docusaurus.config.ts`](https://github.com/backstage/backstage/blob/master/microsite/docusaurus.config.ts) to point to the new release note - Finally copy the content, without the metadata header, into the description of the [`Version Packages` Pull Request](https://github.com/backstage/backstage/pulls?q=is%3Aopen+is%3Apr+in%3Atitle+%22Version+Packages) diff --git a/docs/releases/v1.31.0-changelog.md b/docs/releases/v1.31.0-changelog.md new file mode 100644 index 0000000000..9f0868c042 --- /dev/null +++ b/docs/releases/v1.31.0-changelog.md @@ -0,0 +1,3633 @@ +# Release v1.31.0 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.31.0](https://backstage.github.io/upgrade-helper/?to=1.31.0) + +## @backstage/backend-app-api@1.0.0 + +### Major Changes + +- ec1b4be: Release 1.0 of the new backend system! :tada: + + The backend system is finally getting promoted to 1.0.0. This means that the API is now stable and breaking changes should not occur until version 2.0.0, see our [package versioning policy](https://backstage.io/docs/overview/versioning-policy/#package-versioning-policy) for more information what this means. + + This release also marks the end of the old backend system based on `createRouter` exports. Going forward backend plugins packages will start to deprecate and later this year remove exports supporting the old backend system. If you would like to help out with this transition, see or consult the [migration guide](https://backstage.io/docs/backend-system/building-plugins-and-modules/migrating/#remove-support-for-the-old-backend-system). + +### Minor Changes + +- 19ff127: **BREAKING**: The deprecated `identityServiceFactory` and `tokenManagerServiceFactory` have been removed. +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- cd38da8: Deprecate the `featureDiscoveryServiceFactory` in favor of using `@backstage/backend-defaults#discoveryFeatureLoader` instead. +- 8ccf784: All created backend instances now share a the same `process` exit listeners, and on exit the process will wait for all backend instances to shut down before exiting. This fixes the `EventEmitter` leak warnings in tests. +- 6ed9264: chore(deps): bump `path-to-regexp` from 6.2.2 to 8.0.0 +- c246372: Updated the error message for missing service dependencies to include the plugin and module IDs. +- 7f779c7: `auth.externalAccess` should be optional in the config schema +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- 51a69b5: Fix feature loaders in CJS double-default nested builds +- 0b2a402: Updates to the config schema to match reality +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/config-loader@1.9.1 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/backend-plugin-api@1.0.0 + +### Major Changes + +- ec1b4be: Release 1.0 of the new backend system! :tada: + + The backend system is finally getting promoted to 1.0.0. This means that the API is now stable and breaking changes should not occur until version 2.0.0, see our [package versioning policy](https://backstage.io/docs/overview/versioning-policy/#package-versioning-policy) for more information what this means. + + This release also marks the end of the old backend system based on `createRouter` exports. Going forward backend plugins packages will start to deprecate and later this year remove exports supporting the old backend system. If you would like to help out with this transition, see or consult the [migration guide](https://backstage.io/docs/backend-system/building-plugins-and-modules/migrating/#remove-support-for-the-old-backend-system). + +### Minor Changes + +- 19ff127: **BREAKING**: The deprecated identity and token manager services have been removed. This means that `coreServices.identity` and `coreServices.tokenManager` are gone, along with related types and utilities in other packages. + +- f687050: Removed the following deprecated exports + + - `BackendPluginConfig` use `CreateBackendPluginOptions` + - `BackendModuleConfig` use `CreateBackendModuleOptions` + - `ExtensionPointConfig` use `CreateExtensionPointOptions` + +- 4d82481: Removed deprecated `ServiceFactoryOrFunction` type. + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- cd38da8: Deprecate the `featureDiscoveryServiceRef` in favor of using the new `discoveryFeatureLoader` instead. +- 8052b9b: Add a `toJSON` on refs so that they can appear in expectations in jest tests +- 66dbf0a: Allow the cache service to accept the human duration format for TTL +- 0b2a402: Updates to the config schema to match reality +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/backend-test-utils@1.0.0 + +### Major Changes + +- ec1b4be: Release 1.0 of the new backend system! :tada: + + The backend system is finally getting promoted to 1.0.0. This means that the API is now stable and breaking changes should not occur until version 2.0.0, see our [package versioning policy](https://backstage.io/docs/overview/versioning-policy/#package-versioning-policy) for more information what this means. + + This release also marks the end of the old backend system based on `createRouter` exports. Going forward backend plugins packages will start to deprecate and later this year remove exports supporting the old backend system. If you would like to help out with this transition, see or consult the [migration guide](https://backstage.io/docs/backend-system/building-plugins-and-modules/migrating/#remove-support-for-the-old-backend-system). + +### Minor Changes + +- 19ff127: **BREAKING**: Removed service mocks for the identity and token manager services, which have been removed from `@backstage/backend-plugin-api`. +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 710f621: Added missing service mock for `mockServices.rootConfig.mock`, and fixed the definition of `mockServices.rootHttpRouter.factory` to not have a duplicate callback. +- f421d2a: Make MySQL pool settings a bit more lax +- 0363bf1: There is a new `mockErrorHandler` utility to help in mocking the error middleware in tests. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-app-api@1.0.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/backend-common@0.25.0 + +### Minor Changes + +- a4bac3c: **BREAKING**: You can no longer supply a `basePath` option to the host discovery implementation. In the new backend system, the ability to choose this path has been removed anyway at the plugin router level. + +- 988c145: **BREAKING**: Simplifications and cleanup as part of the Backend System 1.0 work. + + - The deprecated `dropDatabase` function has now been removed, without replacement. + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 6ed9264: chore(deps): bump `path-to-regexp` from 6.2.2 to 8.0.0 +- 8ba77ed: The `legacyPlugin` and `makeLegacyPlugin` helpers now provide their own shim implementation of the identity and token manager services, as these services are being removed from the new backend system. +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- 2e9ec14: Add `pg-format` as a dependency +- 82539fe: Updated dependency `archiver` to `^7.0.0`. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- 3606843: Internal fixes to match `testcontainers` update +- 19ff127: Internal refactor to re-declare the token manager service which was removed from `@backstage/backend-plugin-api`, but is still supported in this package for backwards compatibility. +- 66dbf0a: Allow the cache service to accept the human duration format for TTL +- 0b2a402: Updates to the config schema to match reality +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/integration@1.15.0 + - @backstage/config-loader@1.9.1 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/types@1.1.1 + +## @backstage/backend-defaults@0.5.0 + +### Minor Changes + +- a4bac3c: **BREAKING**: You can no longer supply a `basePath` option to the host discovery implementation. In the new backend system, the ability to choose this path has been removed anyway at the plugin router level. + +- 359fcd7: **BREAKING**: The backwards compatibility with plugins using legacy auth through the token manager service has been removed. This means that instead of falling back to using the old token manager, requests towards plugins that don't support the new auth system will simply fail. Please make sure that all plugins in your deployment are hosted within a backend instance from the new backend system. + +- baeef13: **BREAKING** Removed `createLifecycleMiddleware` and `LifecycleMiddlewareOptions` to clean up API surface. These exports have no external usage and do not provide value in its current form. If you were using these exports, please reach out to the maintainers to discuss your use case. + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +- 19ff127: **BREAKING**: The default backend instance no longer provides implementations for the identity and token manager services, which have been removed from `@backstage/backend-plugin-api`. + + If you rely on plugins that still require these services, you can add them to your own backend by re-creating the service reference and factory. + + The following can be used to implement the identity service: + + ```ts + import { + coreServices, + createServiceFactory, + createServiceRef, + } from '@backstage/backend-plugin-api'; + import { + DefaultIdentityClient, + IdentityApi, + } from '@backstage/plugin-auth-node'; + + backend.add( + createServiceFactory({ + service: createServiceRef({ id: 'core.identity' }), + deps: { + discovery: coreServices.discovery, + }, + async factory({ discovery }) { + return DefaultIdentityClient.create({ discovery }); + }, + }), + ); + ``` + + The following can be used to implement the token manager service: + + ```ts + import { ServerTokenManager, TokenManager } from '@backstage/backend-common'; + import { createBackend } from '@backstage/backend-defaults'; + import { + coreServices, + createServiceFactory, + createServiceRef, + } from '@backstage/backend-plugin-api'; + + backend.add( + createServiceFactory({ + service: createServiceRef({ id: 'core.tokenManager' }), + deps: { + config: coreServices.rootConfig, + logger: coreServices.rootLogger, + }, + createRootContext({ config, logger }) { + return ServerTokenManager.fromConfig(config, { + logger, + allowDisabledTokenManager: true, + }); + }, + async factory(_deps, tokenManager) { + return tokenManager; + }, + }), + ); + ``` + +- 055b75b: **BREAKING**: Simplifications and cleanup as part of the Backend System 1.0 work. + + For the `/database` subpath exports: + + - The deprecated `dropDatabase` function has now been removed, without replacement. + - The deprecated `LegacyRootDatabaseService` type has now been removed. + - The return type from `DatabaseManager.forPlugin` is now directly a `DatabaseService`, as arguably expected. + - `DatabaseManager.forPlugin` now requires the `deps` argument, with the logger and lifecycle services. + + For the `/cache` subpath exports: + + - The `PluginCacheManager` type has been removed. You can still import it from `@backstage/backend-common`, but it's deprecated there, and you should move off of that package by migrating fully to the new backend system. + - Accordingly, `CacheManager.forPlugin` immediately returns a `CacheService` instead of a `PluginCacheManager`. The outcome of this is that you no longer need to make the extra `.getClient()` call. The old `CacheManager` with the old behavior still exists on `@backstage/backend-common`, but the above recommendations apply. + +### Patch Changes + +- 213664e: Fixed an issue where the `useRedisSets` configuration for the cache service would have no effect. + +- 6ed9264: chore(deps): bump `path-to-regexp` from 6.2.2 to 8.0.0 + +- 622360e: Move down the discovery config to be in the root + +- 7f779c7: `auth.externalAccess` should be optional in the config schema + +- fe6fd8c: Accept `ConfigService` instead of `Config` in constructors/factories + +- 82539fe: Updated dependency `archiver` to `^7.0.0`. + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. + +- 5705424: Wrap scheduled tasks from the scheduler core service now in OpenTelemetry spans + +- 7a72ec8: Exports the `discoveryFeatureLoader` as a replacement for the deprecated `featureDiscoveryService`. + The `discoveryFeatureLoader` is a new backend system [feature loader](https://backstage.io/docs/backend-system/architecture/feature-loaders/) that discovers backend features from the current `package.json` and its dependencies. + Here is an example using the `discoveryFeatureLoader` loader in a new backend instance: + + ```ts + import { createBackend } from '@backstage/backend-defaults'; + import { discoveryFeatureLoader } from '@backstage/backend-defaults'; + //... + + const backend = createBackend(); + //... + backend.add(discoveryFeatureLoader); + //... + backend.start(); + ``` + +- b2a329d: Properly indent the config schema + +- 66dbf0a: Allow the cache service to accept the human duration format for TTL + +- 5a8fcb4: Added the option to skip database migrations by setting `skipMigrations: true` in config. This can be done globally in the database config or by plugin id. + +- 0b2a402: Updates to the config schema to match reality + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-app-api@1.0.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/cli-node@0.2.8 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/integration@1.15.0 + - @backstage/config-loader@1.9.1 + - @backstage/plugin-events-node@0.4.0 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/types@1.1.1 + +## @backstage/backend-dynamic-feature-service@0.4.0 + +### Minor Changes + +- 9080f57: **BREAKING**: `dynamicPluginsServiceFactory` is no longer callable as a function. If you need to provide options to make a custom factory, use `dynamicPluginsSchemasServiceFactoryWithOptions` instead. + +### Patch Changes + +- cd38da8: Deprecate the `dynamicPluginsServiceRef`, `dynamicPluginsServiceFactory` and `dynamicPluginsServiceFactoryWithOptions` in favor of using the `dynamicPluginsFeatureDiscoveryLoader` to discover dynamic features in a new backend system. + + See usage examples below: + + Example using the `dynamicPluginsFeatureDiscoveryLoader` loader in a backend instance: + + ```ts + import { createBackend } from '@backstage/backend-defaults'; + import { dynamicPluginsFeatureDiscoveryLoader } from '@backstage/backend-dynamic-feature-service'; + //... + + const backend = createBackend(); + backend.add(dynamicPluginsFeatureDiscoveryLoader); + //... + backend.start(); + ``` + + Passing options to the `dynamicPluginsFeatureDiscoveryLoader` loader in a backend instance: + + ```ts + import { createBackend } from '@backstage/backend-defaults'; + import { dynamicPluginsFeatureDiscoveryLoader } from '@backstage/backend-dynamic-feature-service'; + import { myCustomModuleLoader } from './myCustomModuleLoader'; + //... + + const backend = createBackend(); + backend.add( + dynamicPluginsFeatureDiscoveryLoader({ + moduleLoader: myCustomModuleLoader, + }), + ); + //... + backend.start(); + ``` + +- e27f889: Relax type check for a plugin's default export to also accept a BackendFeature defined as a function instead of an object + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. + +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-common@0.25.0 + - @backstage/backend-app-api@1.0.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-catalog-backend@1.26.0 + - @backstage/plugin-app-node@0.1.25 + - @backstage/cli-node@0.2.8 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/plugin-events-backend@0.3.12 + - @backstage/config-loader@1.9.1 + - @backstage/plugin-events-node@0.4.0 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-scaffolder-node@0.4.11 + - @backstage/plugin-search-backend-node@1.3.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/catalog-client@1.7.0 + +### Minor Changes + +- 78475c3: Allow offset mode paging in entity list provider +- 29e57c7: Add catalog service mocks under the `/testUtils` subpath export. + +### Patch Changes + +- 1882cfe: Moved `getEntities` ordering to utilize database instead of having it inside catalog client + + Please note that the latest version of `@backstage/catalog-client` will not order the entities in the same way as before. This is because the ordering is now done in the database query instead of in the client. If you rely on the ordering of the entities, you may need to update your backend plugin or code to handle this change. + +- Updated dependencies + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + +## @backstage/catalog-model@1.7.0 + +### Minor Changes + +- 74acf06: Add `dependencyOf` prop to catalog model for Component kind to enable building relationship graphs with both directions using `dependsOn` and `dependencyOf`. + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/core-app-api@1.15.0 + +### Minor Changes + +- ddbeace: Added the ability to explicitly disable routes through the `bindRoutes` option by passing `false` as the route target. This also fixes a bug where route bindings in config were incorrectly prioritized above the ones in code in certain situations. + +### Patch Changes + +- ea69e46: The `defaultConfigLoader` now also reads configuration from scripts tags with `type="backstage.io/config"`. The tag is expected to contain a JSON-serialized array of `AppConfig` objects. If any of these script tags are present, the injected runtime configuration in the static assets will no longer be used. +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.9.4 + - @backstage/version-bridge@1.0.9 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/core-compat-api@0.3.0 + +### Minor Changes + +- 6db849e: **BREAKING**: The `namespace` parameter for API's is now defaulted to the `pluginId` which was discovered. This means that if you're overriding API's by using ID's directly, they might have changed to include the plugin ID too. + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- c816e2d: Added support for new `FrontendPlugin` and `FrontendModule` types. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/version-bridge@1.0.9 + +## @backstage/core-components@0.15.0 + +### Minor Changes + +- 9adc552: Added missing items to `overridableComponents` + + **BREAKING** Overridable component name for styling `OAuthRequestDialog` changed to `BackstageOAuthRequestDialog`. Overridable component name `BackstageMissingAnnotationEmptyState` that was previously deprecated has been removed. + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking +- 0944334: Removed default title set to Unknown page on `ContentHeaderTitle` component to support usage of component without title prop. +- f325258: Use getOptionalString for optional app.support.items\[].links\[].title +- af4c146: Support menu items should not be buttons in favour of links +- 107a147: Fixed `Table` width being overridden by custom `style` prop. +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- 06b8206: Added `titleComponent` prop to `SignInPage` component to allow further customization of the title using `ReactNode` +- dbbd93e: Internal update to match recent React types +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/version-bridge@1.0.9 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/dev-utils@1.1.0 + +### Minor Changes + +- 10b1452: Allow using translations in `createDevApp` + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/core-app-api@1.15.0 + - @backstage/integration-react@1.1.31 + - @backstage/catalog-model@1.7.0 + - @backstage/app-defaults@1.5.11 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + +## @backstage/frontend-app-api@0.9.0 + +### Minor Changes + +- 7c80650: **BREAKING**: The `createSpecializedApp` function now creates a bare-bones app without any of the default app structure or APIs. To re-introduce this functionality if you need to use `createSpecializedApp` you can install the `app` plugin from `@backstage/plugin-app`. + + In addition, the `createApp` and `CreateAppFeatureLoader` exports are now deprecated as they are being moved to `@backstage/frontend-defaults`, which should be used instead. + +- 62cce6c: Removed deprecated `icons` property passing to `createApp` and `createSpecializedApp`. Use `IconBundleBlueprint.make` to create extensions instead and include them in the app. + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. + +- 2bb9517: Introduce the `@backstage/plugin-app` package to hold all of the built-in extensions for easy consumption and overriding. + +- c816e2d: Added support for new `FrontendPlugin` and `FrontendModule` types. + +- f3a2b91: Moved several implementations of built-in APIs from being hardcoded in the app to instead be provided as API extensions. This moves all API-related inputs from the `app` extension to the respective API extensions. For example, extensions created with `ThemeBlueprint` are now attached to the `themes` input of `api:app-theme` rather than the `app` extension. + +- 0c70949: Reverse the order of API factory initialization in order to make sure that overrides from modules take priority + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +- 5446061: Internal refactor following removal of v1 extension support. The app implementation itself still supports v1 extensions at runtime. + +- 948d431: Removing deprecated `namespace` parameter in favour of `pluginId` instead + +- ddbeace: Added the ability to explicitly disable routes through the `bindRoutes` option by passing `false` as the route target. This also fixes a bug where route bindings in config were incorrectly prioritized above the ones in code in certain situations. + +- 98850de: Added support for defining `replaces` in `createExtensionInput` which will allow extensions to redirect missing `attachTo` points to an input of the created extension. + + ```ts + export const AppThemeApi = ApiBlueprint.makeWithOverrides({ + name: 'app-theme', + inputs: { + themes: createExtensionInput([ThemeBlueprint.dataRefs.theme], { + // attachTo: { id: 'app', input: 'themes'} will be redirected to this input instead + replaces: [{ id: 'app', input: 'themes' }], + }), + }, + factory: () { + ... + } + }); + ``` + +- 4a66456: Added the `root` extension the replace the `app` extension as the root of the app. + +- Updated dependencies + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-app-api@1.15.0 + - @backstage/frontend-defaults@0.1.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/version-bridge@1.0.9 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/frontend-defaults@0.1.0 + +### Minor Changes + +- 7c80650: Initial release of this package, which provides a default app setup through the `createApp` function. This replaces the existing `createApp` method from `@backstage/frontend-app-api`. + +### Patch Changes + +- 7d19cd5: Added a new `CreateAppOptions` type for the `createApp` options. +- 7d19cd5: Added `createPublicSignInApp`, used to creating apps for the public entry point. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/frontend-app-api@0.9.0 + - @backstage/plugin-app@0.1.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/frontend-plugin-api@0.8.0 + +### Minor Changes + +- 5446061: **BREAKING**: Removed support for "v1" extensions. This means that it is no longer possible to declare inputs and outputs as objects when using `createExtension`. In addition, all extension creators except for `createComponentExtension` have been removed, use the equivalent blueprint instead. See the [1.30 migration documentation](https://backstage.io/docs/frontend-system/architecture/migrations/#130) for more information on this change. +- fec8b57: **BREAKING**: Updated the type parameters for `ExtensionDefinition` and `ExtensionBlueprint` to only have a single object parameter. The base type parameter is exported as `ExtensionDefinitionParameters` and `ExtensionBlueprintParameters` respectively. This is shipped as an immediate breaking change as we expect usage of these types to be rare, and it does not affect the runtime behavior of the API. + + This is a breaking change as it changes the type parameters. Existing usage can generally be updated as follows: + + - `ExtensionDefinition` -> `ExtensionDefinition` + - `ExtensionDefinition` -> `ExtensionDefinition` + - `ExtensionDefinition` -> `ExtensionDefinition<{ config: TConfig }>` + - `ExtensionDefinition` -> `ExtensionDefinition<{ config: TConfig, configInput: TConfigInput }>` + + If you need to infer the parameter you can use `ExtensionDefinitionParameters`, for example: + + ```ts + import { + ExtensionDefinition, + ExtensionDefinitionParameters, + } from '@backstage/frontend-plugin-api'; + + function myUtility( + ext: ExtensionDefinition, + ): T['config'] { + // ... + } + ``` + + The same patterns apply to `ExtensionBlueprint`. + + This change is made to improve the readability of API references and ability to evolve the type parameters in the future. + +### Patch Changes + +- 2bb9517: Introduce the `@backstage/plugin-app` package to hold all of the built-in extensions for easy consumption and overriding. + +- c816e2d: Added `createFrontendModule` as a replacement for `createExtensionOverrides`, which is now deprecated. + + Deprecated the `BackstagePlugin` and `FrontendFeature` type in favor of `FrontendPlugin` and `FrontendFeature` from `@backstage/frontend-app-api` respectively. + +- 52f9c5a: Deprecated the `namespace` option for `createExtensionBlueprint` and `createExtension`, these are no longer required and will default to the `pluginId` instead. + + You can migrate some of your extensions that use `createExtensionOverrides` to using `createFrontendModule` instead and providing a `pluginId` there. + + ```ts + // Before + createExtensionOverrides({ + extensions: [ + createExtension({ + name: 'my-extension', + namespace: 'my-namespace', + kind: 'test', + ... + }) + ], + }); + + // After + createFrontendModule({ + pluginId: 'my-namespace', + extensions: [ + createExtension({ + name: 'my-extension', + kind: 'test', + ... + }) + ], + }); + ``` + +- f3a2b91: Moved several implementations of built-in APIs from being hardcoded in the app to instead be provided as API extensions. This moves all API-related inputs from the `app` extension to the respective API extensions. For example, extensions created with `ThemeBlueprint` are now attached to the `themes` input of `api:app-theme` rather than the `app` extension. + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +- 948d431: Removing deprecated `namespace` parameter in favour of `pluginId` instead + +- 043d7cd: Internal refactor + +- 220f4f7: Remove unnecessary config object on IconBundleBlueprint + +- 2a61422: The `factory` option is no longer required when overriding an extension. + +- 98850de: Added support for defining `replaces` in `createExtensionInput` which will allow extensions to redirect missing `attachTo` points to an input of the created extension. + + ```ts + export const AppThemeApi = ApiBlueprint.makeWithOverrides({ + name: 'app-theme', + inputs: { + themes: createExtensionInput([ThemeBlueprint.dataRefs.theme], { + // attachTo: { id: 'app', input: 'themes'} will be redirected to this input instead + replaces: [{ id: 'app', input: 'themes' }], + }), + }, + factory: () { + ... + } + }); + ``` + +- 4a66456: A new `apis` parameter has been added to `factory` for extensions. This is a way to access utility APIs without being coupled to the React context. + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/version-bridge@1.0.9 + - @backstage/types@1.1.1 + +## @backstage/frontend-test-utils@0.2.0 + +### Minor Changes + +- 5446061: Removed support for testing "v1" extensions, where outputs are defined as an object rather than an array. +- e6e488c: **BREAKING**: The deprecated `.render()` method has been removed from the extension tester. + +### Patch Changes + +- 2a61422: The extension tester will no longer unconditionally enable any additional extensions that have been added. +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- 4a66456: Internal update to add support for passing an `ApiRegistry` when creating the node tree +- 2bb9517: Introduce the `@backstage/plugin-app` package to hold all of the built-in extensions for easy consumption and overriding. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 948d431: Removing deprecated `namespace` parameter in favour of `pluginId` instead +- 043d7cd: Internal refactor +- f6d1874: Added the ability to provide additional `extensions` and `features` to `renderInTestApp` +- Updated dependencies + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/frontend-app-api@0.9.0 + - @backstage/plugin-app@0.1.0 + - @backstage/test-utils@1.6.0 + - @backstage/version-bridge@1.0.9 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/integration@1.15.0 + +### Minor Changes + +- 1573014: The Gerrit integration can now resolve Gitiles urls that point to the following + refs: + + - HEAD + - A SHA + - Tag + - Branch + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/test-utils@1.6.0 + +### Minor Changes + +- d47be30: Added the icons option to the renderInTestApp function's TestAppOptions to be forwarded to the icons option of `createApp`. + +### Patch Changes + +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-app-api@1.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-permission-react@0.4.26 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-app@0.1.0 + +### Minor Changes + +- 2bb9517: Introduce the `@backstage/plugin-app` package to hold all of the built-in extensions for easy consumption and overriding. + +### Patch Changes + +- 52f9c5a: Deprecated the `namespace` option for `createExtensionBlueprint` and `createExtension`, these are no longer required and will default to the `pluginId` instead. + + You can migrate some of your extensions that use `createExtensionOverrides` to using `createFrontendModule` instead and providing a `pluginId` there. + + ```ts + // Before + createExtensionOverrides({ + extensions: [ + createExtension({ + name: 'my-extension', + namespace: 'my-namespace', + kind: 'test', + ... + }) + ], + }); + + // After + createFrontendModule({ + pluginId: 'my-namespace', + extensions: [ + createExtension({ + name: 'my-extension', + kind: 'test', + ... + }) + ], + }); + ``` + +- 57bf6ae: Fix issue with `AlertDisplay` and other components defined with `AppRootElementBlueprint` not being rendered when at the `SignInWrapper` + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-permission-react@0.4.26 + +## @backstage/plugin-auth-backend@0.23.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 527d973: Migrated the `Bitbucket Server` auth provider to be implemented using the new `@backstage/plugin-auth-backend-module-bitbucket-server-provider` module. +- d908d8c: Migrated the `Auth0` auth provider to be implemented using the new `@backstage/plugin-auth-backend-module-auth0-provider` module. +- 19ff127: Internal refactor to remove dependencies on the identity and token manager services, which have been removed. Public APIs no longer require the identity service or token manager to be provided. +- 3c2d690: Allow users without defined email to be ingested by the `msgraph` catalog plugin and add `userIdMatchingUserEntityAnnotation` sign-in resolver for the Microsoft auth provider to support sign-in for users without defined email. +- 92118cd: Updated dependency `@node-saml/passport-saml` to `^5.0.0`. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.2.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/plugin-auth-backend-module-auth0-provider@0.1.0 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.2.0 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.3.0 + - @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.0 + - @backstage/plugin-auth-backend-module-github-provider@0.2.0 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.2.0 + - @backstage/plugin-auth-backend-module-google-provider@0.2.0 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.3.0 + - @backstage/plugin-auth-backend-module-oidc-provider@0.3.0 + - @backstage/plugin-auth-backend-module-okta-provider@0.1.0 + - @backstage/plugin-auth-backend-module-onelogin-provider@0.2.0 + - @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.0 + - @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.0 + - @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.0 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.0 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-auth0-provider@0.1.0 + +### Minor Changes + +- d908d8c: New module for `@backstage/plugin-auth-backend` that adds a Auth0 auth provider. + +### Patch Changes + +- 0a3a13e: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- ecbc47e: Fix a bug where the signer was checked from the payload instead of the header +- 8d1fb8d: Throw correct error when email is missing from the claims +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-auth-backend@0.23.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.0 + +### Minor Changes + +- 527d973: New module for `@backstage/plugin-auth-backend` that adds a `Bitbucket Server` auth provider. + +### Patch Changes + +- 0a3a13e: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-google-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-guest-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 339c67d: This provider will now reject authentication attempts rather than halt backend startup when `dangerouslyAllowOutsideDevelopment` is not set in production. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 3c2d690: Allow users without defined email to be ingested by the `msgraph` catalog plugin and add `userIdMatchingUserEntityAnnotation` sign-in resolver for the Microsoft auth provider to support sign-in for users without defined email. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-auth-backend@0.23.0 + +## @backstage/plugin-auth-backend-module-okta-provider@0.1.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-onelogin-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/config@1.2.0 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/catalog-model@1.7.0 + +## @backstage/plugin-catalog@1.23.0 + +### Minor Changes + +- 78475c3: Allow offset mode paging in entity list provider + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 5446061: The `/alpha` export no longer export extension creators for the new frontend system, existing usage should be switched to use the equivalent extension blueprint instead. For more information see the [new frontend system 1.30 migration documentation](https://backstage.io/docs/frontend-system/architecture/migrations#130). +- 0ff53c8: Enable loading state for paginated catalog tables by passing `isLoading` prop +- 180a45f: Entity presentation api now only fetches fields that are required to display entity title +- a159180: Added missing items to `overridableComponents` +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/plugin-search-react@1.8.0 + - @backstage/integration-react@1.1.31 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/plugin-permission-react@0.4.26 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.6 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-catalog-backend@1.26.0 + +### Minor Changes + +- 74acf06: Add `dependencyOf` prop to catalog model for Component kind to enable building relationship graphs with both directions using `dependsOn` and `dependencyOf`. +- 78475c3: Allow offset mode paging in entity list provider +- bd35cdb: The `analyze-location` endpoint is now protected by the `catalog.location.analyze` permission. + The `validate-entity` endpoint is now protected by the `catalog.entity.validate` permission. + +### Patch Changes + +- 1882cfe: Moved `getEntities` ordering to utilize database instead of having it inside catalog client + + Please note that the latest version of `@backstage/catalog-client` will not order the entities in the same way as before. This is because the ordering is now done in the database query instead of in the client. If you rely on the ordering of the entities, you may need to update your backend plugin or code to handle this change. + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. + +- 53cce86: Fixed an issue with the by-query call, where ordering by a field that does not exist on all entities led to not all results being returned + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-search-backend-module-catalog@0.2.2 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/backend-openapi-utils@0.1.18 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/backend-openapi-utils@0.1.18 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-catalog-backend-module-gcp@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/config@1.2.0 + - @backstage/plugin-kubernetes-common@0.8.3 + +## @backstage/plugin-catalog-backend-module-github-org@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/plugin-catalog-backend-module-github@0.7.3 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-catalog-backend-module-gitlab-org@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-catalog-backend-module-gitlab@0.4.2 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/plugin-events-node@0.4.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.9.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- b50e4a8: Add support for optional configuration of `dnAttributeName` and `uuidAttributeName` in LDAP vendor +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-backend-module-logs@0.1.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-catalog-backend@1.26.0 + - @backstage/plugin-events-node@0.4.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-backend@1.26.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/plugin-scaffolder-common@1.5.6 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.5.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-unprocessed-entities-common@0.0.4 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-common@1.1.0 + +### Minor Changes + +- bd35cdb: The `analyze-location` endpoint is now protected by the `catalog.location.analyze` permission. + The `validate-entity` endpoint is now protected by the `catalog.entity.validate` permission. + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-catalog-node@1.13.0 + +### Minor Changes + +- bd35cdb: The `analyze-location` endpoint is now protected by the `catalog.location.analyze` permission. + The `validate-entity` endpoint is now protected by the `catalog.entity.validate` permission. +- 29e57c7: Add catalog service mocks under the `/testUtils` subpath export. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-react@1.13.0 + +### Minor Changes + +- 78475c3: Allow offset mode paging in entity list provider + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 5446061: The `/alpha` export no longer export extension creators for the new frontend system, existing usage should be switched to use the equivalent extension blueprint instead. For more information see the [new frontend system 1.30 migration documentation](https://backstage.io/docs/frontend-system/architecture/migrations#130). +- a159180: Added missing items to `overridableComponents` +- ae9b6cb: Small internal fix to better work with recent `lodash` versions +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/integration-react@1.1.31 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/version-bridge@1.0.9 + - @backstage/plugin-permission-react@0.4.26 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-devtools-backend@0.4.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 5d1670f: Update README installation instructions +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/config-loader@1.9.1 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-devtools-common@0.1.12 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-events-node@0.4.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + +## @backstage/plugin-notifications-backend@0.4.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 1c6f142: Internal refactor to avoid use of insecure coding patterns. +- 4a53dd0: Implement icon in backend and show icon in table if available. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- f195972: Validate notification link when new notification is created +- 5edd344: Refactor to use injected catalog client in the new backend system +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/plugin-signals-node@0.1.11 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-notifications-common@0.0.5 + - @backstage/plugin-notifications-node@0.2.6 + +## @backstage/plugin-notifications-backend-module-email@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 5edd344: Refactor to use injected catalog client in the new backend system +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/config@1.2.0 + - @backstage/integration-aws-node@0.1.12 + - @backstage/types@1.1.1 + - @backstage/plugin-notifications-common@0.0.5 + - @backstage/plugin-notifications-node@0.2.6 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-scaffolder@1.25.0 + +### Minor Changes + +- 860ad3a: Expose styles for TemplateEditor, TemplateFormPreviewer and CustomFieldExplorer +- 4baad34: Added support for `omitExtraData` and `liveOmit` for rjsf in the scaffolder +- 5143616: Added EntityOwnerPicker component to the TemplateListPage to allow filtering on owner + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. + +- b0a5c9f: The `ui:options` for `OwnedEntityPicker` field are now passed to `EntityPicker`. This allows you to use any `ui:options` which `EntityPicker` accepts in the `OwnedEntityPicker` field including `allowArbitraryValues` and `defaultNamespace`. + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +- 0a50d44: Updated dependency `@rjsf/utils` to `5.21.1`. + Updated dependency `@rjsf/core` to `5.21.1`. + Updated dependency `@rjsf/material-ui` to `5.21.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.21.1`. + +- fa9d8da: Updated dependency `@rjsf/utils` to `5.20.1`. + Updated dependency `@rjsf/core` to `5.20.1`. + Updated dependency `@rjsf/material-ui` to `5.20.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.20.1`. + +- 0944334: Removed duplicated titles on Scaffolder `TemplateListPage` component + +- 7976081: Added support for all request parameters in the Github create/update environment API in the Github environment create scaffolder action. + + Disable MultiEntityPicker when `maxItems` limit is reached defined in `JSONSchema` + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/integration-react@1.1.31 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-scaffolder-react@1.12.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/integration@1.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/plugin-permission-react@0.4.26 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.6 + +## @backstage/plugin-scaffolder-backend@1.25.0 + +### Minor Changes + +- df9ae9e: Added scaffolder action publish:bitbucketCloud:pull-request +- 62898bd: `createRouter` and its related types has been marked as deprecared. This backend should instead be initialized using the new backend system. + +### Patch Changes + +- f0c6b25: Allow listing file contents with `debug:log` scaffolder action + +- c160951: Found the issue during testing the clean up of the workspace for the database implementation. + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. + +- f865103: Updated dependency `esbuild` to `^0.23.0`. + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. + +- 7976081: Added support for all request parameters in the Github create/update environment API in the Github environment create scaffolder action. + + Disable MultiEntityPicker when `maxItems` limit is reached defined in `JSONSchema` + +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/plugin-scaffolder-backend-module-github@0.5.0 + - @backstage/integration@1.15.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0 + - @backstage/plugin-scaffolder-backend-module-azure@0.2.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.0 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.2.0 + - @backstage/plugin-scaffolder-backend-module-gitea@0.2.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.23 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-scaffolder-common@1.5.6 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-azure@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 59d8da4: Publish Azure action now uses basic authentication to authenticate to Git when Azure integration is configured to use App Registration/Service Account or Managed Identity. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.0 + - @backstage/integration@1.15.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- df9ae9e: Added scaffolder action publish:bitbucketCloud:pull-request +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-bitbucket-cloud-common@0.2.23 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.3.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-gcp@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 9e5923d: Added test cases for publish:gerrit action examples +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-gitea@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-github@0.5.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 22a19e6: Added the ability for the actions `publish:github` and `github:repo:create` to take inputs for 'custom properties' for organization repositories. + +- 162cdf4: Update dependency @octokit/webhooks to 10.9.2 due to SNYK-JS-OCTOKITWEBHOOKS-6129527 + +- 7976081: Added support for all request parameters in the Github create/update environment API in the Github environment create scaffolder action. + + Disable MultiEntityPicker when `maxItems` limit is reached defined in `JSONSchema` + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-notifications@0.1.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-notifications-common@0.0.5 + - @backstage/plugin-notifications-node@0.2.6 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-rails@0.5.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.4.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-node@0.4.11 + - @backstage/plugin-scaffolder-node-test-utils@0.1.12 + +## @backstage/plugin-scaffolder-react@1.12.0 + +### Minor Changes + +- 4512f71: Add `ui:backstage.review.name` option for custom item names on scaffolder review page, and also add support for rendering the `title` property instead of the key name. +- 4baad34: Added support for `omitExtraData` and `liveOmit` for rjsf in the scaffolder + +### Patch Changes + +- 1f3c5aa: Fix scaffolder review step issue where schema options are not handled for fields on multi-step templates. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 0a50d44: Updated dependency `@rjsf/utils` to `5.21.1`. + Updated dependency `@rjsf/core` to `5.21.1`. + Updated dependency `@rjsf/material-ui` to `5.21.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.21.1`. +- fa9d8da: Updated dependency `@rjsf/utils` to `5.20.1`. + Updated dependency `@rjsf/core` to `5.20.1`. + Updated dependency `@rjsf/material-ui` to `5.20.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.20.1`. +- c2cbe1e: Updated dependency `use-immer` to `^0.10.0`. +- b0f0118: Remove unnecessary singleton wrapping of `scaffolderApiRef`. +- 3ebb64f: - Fix secret widget field not displaying as required. + - Fix secret widget not able to be required inside nested objects. + - Fix secret widget not able to be disabled. + - Support `minLength` and `maxLength` properties for secret widget. +- 8dd6ef6: Fix an issue where keys with duplicate final key parts are not all displayed in the `ReviewState`. Change the way the keys are formatted to include the full schema path, separated by `>`. +- 9a0672a: Scaffolder review page shows static amount of asterisks for secret fields. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/version-bridge@1.0.9 + - @backstage/plugin-permission-react@0.4.26 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.6 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.3.0 + +### Minor Changes + +- 479808f: Always set default request parameters for requests to stackoverflow while allow to overwrite them. Remove site parameter as causing the request to fail. +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/config@1.2.0 + - @backstage/plugin-search-backend-node@1.3.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-react@1.8.0 + +### Minor Changes + +- 9d66d8c: Make use of the `useApp` hook to retrieve the specified search icon in the SearchBar + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- f26ff99: Slight type tweak to match newer React versions better +- dbbd93e: Internal update to match recent React types +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 5446061: The `/alpha` export no longer export extension creators for the new frontend system, existing usage should be switched to use the equivalent extension blueprint instead. For more information see the [new frontend system 1.30 migration documentation](https://backstage.io/docs/frontend-system/architecture/migrations#130). +- a159180: Added missing items to `overridableComponents` +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/version-bridge@1.0.9 + - @backstage/types@1.1.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-signals-backend@0.2.0 + +### Minor Changes + +- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs. + + This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config. + + As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it. + +### Patch Changes + +- a0f1f0d: Bump the `ws` library +- 3ec5ccb: The `createRouter` and its related types has been marked as deprecared. This backend should instead be initialized using the new backend system. +- 19ff127: Internal refactor to remove dependencies on the identity and token manager services, which have been removed. Public APIs no longer require the identity service or token manager to be provided. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/plugin-signals-node@0.1.11 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/app-defaults@1.5.11 + +### Patch Changes + +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/core-app-api@1.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-permission-react@0.4.26 + +## @backstage/backend-openapi-utils@0.1.18 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/errors@1.2.4 + +## @backstage/cli@0.27.1 + +### Patch Changes + +- d2d2313: Add `config.d.ts` files to the list of included file in `tsconfig.json`. + + This allows ESLint to detect issues or deprecations in those files. + +- 16ffdd6: Remove direct `vite` dependency + +- 8069f4a: Update Scaffolder module template to add itself to the backend + +- 97422b0: Update templates to not refer to backend-common + +- 0e1a817: The app build process now outputs an additional `index.html.tmpl` file. This is an non-templated version of the `index.html` file, which can be used to delay templating until runtime. + + The new `index.html.tmpl` file also sets a `backstage-public-path` meta tag to be templated at runtime. The meta tag is in turn picked up by the new `@backstage/cli/config/webpack-public-path.js` entry point script, which uses it to set the runtime public path of the Webpack bundle. + +- 1b5c264: Add `checks: 'read'` for default GitHub app permissions + +- b4685e7: Added `watchOptions` to frontend webpack config for compatibility with Yarn PnP + +- d29fc1b: Updated dependency `@module-federation/enhanced` to `^0.6.0`. + +- f865103: Updated dependency `esbuild` to `^0.23.0`. + +- ab7713a: Updated dependency `eslint-plugin-jest` to `^28.0.0`. + +- c78ff91: Updated dependency `@rollup/plugin-commonjs` to `^26.0.0`. + +- 4ebf36f: Upgrade to `vite@v5` + +- 2d3caaf: The build commands now support the new `backstage.inline` flag in `package.json`, which causes the contents of private packages to be inlined into the consuming package, rather than be treated as an external dependency. + +- 569c3f0: Fixed an issue where published frontend packages would end up with an invalid import structure if a single module imported both `.css` and `.svg` files. + +- 3d88455: Add support for `backstage:^` version ranges to versions:bump when using the experimental yarn plugin + +- d10f6b6: Allow overriding minify flag with build repo command + +- Updated dependencies + - @backstage/catalog-model@1.7.0 + - @backstage/cli-node@0.2.8 + - @backstage/integration@1.15.0 + - @backstage/config-loader@1.9.1 + - @backstage/eslint-plugin@0.1.9 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/release-manifests@0.0.11 + - @backstage/types@1.1.1 + +## @backstage/cli-node@0.2.8 + +### Patch Changes + +- 0c70f43: Add definition for the new `backstage.inline` field in `package.json`. +- Updated dependencies + - @backstage/cli-common@0.1.14 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/codemods@0.1.50 + +### Patch Changes + +- 0894166: Updated dependency `jscodeshift` to `^0.16.0`. +- Updated dependencies + - @backstage/cli-common@0.1.14 + +## @backstage/config-loader@1.9.1 + +### Patch Changes + +- ef3c507: Updated dependency `typescript-json-schema` to `^0.65.0`. +- Updated dependencies + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/core-plugin-api@1.9.4 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/version-bridge@1.0.9 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/create-app@0.5.19 + +### Patch Changes + +- d2d2313: Add `config.d.ts` files to the list of included file in `tsconfig.json`. + + This allows ESLint to detect issues or deprecations in those files. + +- 4975e63: Yarn 4 is now the default for `create-app`. Also updated `yarn dev` script to use `yarn workspaces foreach` and removed unused Lerna and Concurrently dependencies. + +- 4735881: Bumped create-app version. + +- 97422b0: Update templates to not refer to backend-common + +- 019d9ad: Minor dockerfile syntax update + +- e03acd8: Updated Dockerfile base image to `node:20-bookworm-slim` from `node:18-bookworm-slim` + +- bf370c2: Remove references to the `@backstage/backend-tasks` in versions of the `create-app` package, as it has been deprecated. + +- Updated dependencies + - @backstage/cli-common@0.1.14 + +## @backstage/eslint-plugin@0.1.9 + +### Patch Changes + +- 08895e3: Added support for linting dependencies on workspace packages with the `backstage.inline` flag. + +## @backstage/integration-react@1.1.31 + +### Patch Changes + +- 8a9d797: Remove unnecessary broad permissions from Gitlab `SCMAuth` + + Newer versions of Gitlab (after 2019) do not require the broad api permissions to write to repos. + +- Updated dependencies + - @backstage/integration@1.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/config@1.2.0 + +## @backstage/repo-tools@0.9.7 + +### Patch Changes + +- 5c4aa2f: Updated dependency `@useoptic/openapi-utilities` to `^0.55.0`. +- 1a8837e: Avoid generating API reports for packages with `backstage.inline` set. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/cli-node@0.2.8 + - @backstage/config-loader@1.9.1 + - @backstage/cli-common@0.1.14 + - @backstage/errors@1.2.4 + +## @techdocs/cli@1.8.19 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/plugin-techdocs-node@1.12.11 + - @backstage/catalog-model@1.7.0 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + +## @backstage/theme@0.5.7 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +## @backstage/version-bridge@1.0.9 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +## @backstage/plugin-api-docs@0.11.9 + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 8a474f2: Updating docs to use `createFrontendModule` instead +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/plugin-catalog@1.23.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/plugin-permission-react@0.4.26 + +## @backstage/plugin-app-backend@0.3.74 + +### Patch Changes + +- 72a8c7b: Return HTTP status 400 rather than 500 when receiving an unknown POST request. + +- d3f79d1: Fixing dependency metadata with the new `@backstage/plugin-app` package + +- 590fb2d: **BREAKING**: The app backend now supports the new `index.html.tmpl` output from `@backstage/cli`. If available, the `index.html` will be templated at runtime with the current configuration of the app backend. + + This is marked as a breaking change because you must now supply the app build-time configuration to the backend. This change also affects the public path behavior, where it is no longer necessary to build the app with the correct public path upfront. You now only need to supply a correct `app.baseUrl` to the app backend plugin at runtime. + + An effect that this change has is that the `index.html` will now contain and present the frontend configuration in an easily readable way, which can aid in debugging. This data was always available in the frontend, but it was injected and hidden in the static bundle. + + This templating behavior is enabled by default, but it can be disabled by setting the `app.disableConfigInjection` configuration option to `true`. + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-app-node@0.1.25 + - @backstage/config-loader@1.9.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-app-node@0.1.25 + +### Patch Changes + +- d3f79d1: Fixing dependency metadata with the new `@backstage/plugin-app` package +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/config-loader@1.9.1 + +## @backstage/plugin-app-visualizer@0.1.10 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-plugin-api@1.9.4 + +## @backstage/plugin-auth-node@0.5.2 + +### Patch Changes + +- c46eb0f: Extend the "unable to resolve user identity" message +- d908d8c: Accepts an optional options object in the `PassportOAuthAuthenticatorHelper.authenticate` method. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- 6f409b7: The `emailMatchingUserEntityProfileEmail` sign-in resolver will now also try matching emails with plus addressing removed. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-react@0.1.6 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/errors@1.2.4 + +## @backstage/plugin-bitbucket-cloud-common@0.2.23 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.15.0 + +## @backstage/plugin-catalog-backend-module-aws@0.4.2 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/plugin-kubernetes-common@0.8.3 + +## @backstage/plugin-catalog-backend-module-azure@0.2.2 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.3.2 + +### Patch Changes + +- 19ff127: Internal refactor to remove dependencies on the identity and token manager services, which have been removed. Public APIs no longer require the identity service or token manager to be provided. +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.23 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.2.2 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-catalog-backend-module-gerrit@0.2.2 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-catalog-backend-module-github@0.7.3 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- 5edd344: Refactor to use injected catalog client in the new backend system +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-backend@1.26.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.4.2 + +### Patch Changes + +- 53b24d9: Internal update to use the new cache manager + +- 0476be3: Add the `relations` array to allow Backstage to mirror GitLab's membership behavior, including descendant, inherited, and shared-from-group memberships. + + The previous `allowInherited` config option will be deprecated in future versions. Use the `relations` array with the `INHERITED` option instead. + + ```yaml + catalog: + providers: + gitlab: + development: + relations: + - INHERITED + ``` + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. + +- b446954: Remove dependency on backend-common + +- 06cc084: Added a `includeUsersWithoutSeat` config option that allow import of users without a paid seat, e.g. for Gitlab Free on SaaS. Defaults to false + +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.5.3 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- 4b28e39: Updated the README to include documentation for the new backend support +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-backend@1.26.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-backend-module-msgraph@0.6.2 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- 3c2d690: Allow users without defined email to be ingested by the `msgraph` catalog plugin and add `userIdMatchingUserEntityAnnotation` sign-in resolver for the Microsoft auth provider to support sign-in for users without defined email. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.2.2 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-graph@0.4.9 + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- da91078: Fixed a bug in the `CatalogGraphPage` component where, after clicking on some nodes, clicking the back button would break the navigation. This issue caused the entire navigation to fail and behaved differently across various browsers. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 8a474f2: Updating docs to use `createFrontendModule` instead +- a159180: Added missing items to `overridableComponents` +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-import@0.12.3 + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- f3c90da: Support button title should be contained in a single menu item +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/integration-react@1.1.31 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/integration@1.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-catalog-unprocessed-entities@0.2.8 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +- 4f08c85: Show additional info on DevTools unprocessed entities table + + - Location path (so that it's easier to search the failed entity from the YAML URL) + - Time info of last discovery and next refresh time so that users can be aware of it and can sort the errors based on the time. + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/catalog-model@1.7.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/errors@1.2.4 + +## @backstage/plugin-config-schema@0.1.59 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-devtools@0.1.18 + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- 019d9ad: Minor dockerfile syntax update +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/plugin-permission-react@0.4.26 + - @backstage/errors@1.2.4 + - @backstage/plugin-devtools-common@0.1.12 + +## @backstage/plugin-events-backend@0.3.12 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-events-backend-module-aws-sqs@0.4.2 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-events-backend-module-azure@0.2.11 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-events-node@0.4.0 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.2.11 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-events-node@0.4.0 + +## @backstage/plugin-events-backend-module-gerrit@0.2.11 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-events-node@0.4.0 + +## @backstage/plugin-events-backend-module-github@0.2.11 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-events-backend-module-gitlab@0.2.11 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-events-backend-test-utils@0.1.35 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.4.0 + +## @backstage/plugin-home@0.7.10 + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 0a50d44: Updated dependency `@rjsf/utils` to `5.21.1`. + Updated dependency `@rjsf/core` to `5.21.1`. + Updated dependency `@rjsf/material-ui` to `5.21.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.21.1`. +- fa9d8da: Updated dependency `@rjsf/utils` to `5.20.1`. + Updated dependency `@rjsf/core` to `5.20.1`. + Updated dependency `@rjsf/material-ui` to `5.20.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.20.1`. +- a159180: Added missing items to `overridableComponents` +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-app-api@1.15.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-home-react@0.1.17 + - @backstage/config@1.2.0 + +## @backstage/plugin-home-react@0.1.17 + +### Patch Changes + +- 0a50d44: Updated dependency `@rjsf/utils` to `5.21.1`. + Updated dependency `@rjsf/core` to `5.21.1`. + Updated dependency `@rjsf/material-ui` to `5.21.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.21.1`. +- fa9d8da: Updated dependency `@rjsf/utils` to `5.20.1`. + Updated dependency `@rjsf/core` to `5.20.1`. + Updated dependency `@rjsf/material-ui` to `5.20.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.20.1`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/core-plugin-api@1.9.4 + +## @backstage/plugin-kubernetes@0.11.14 + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- bfc0f42: Make k8s entity content appear on components & resources only by default in new FE system +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/catalog-model@1.7.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/plugin-kubernetes-react@0.4.3 + - @backstage/plugin-kubernetes-common@0.8.3 + +## @backstage/plugin-kubernetes-backend@0.18.6 + +### Patch Changes + +- a0f1f0d: Bump the `ws` library +- f55f8bf: The `KubernetesBuilder` and its related types has been marked as deprecared. This backend should instead be initialized using the new backend system. +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- ca96b66: Skip start without proper config +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/plugin-kubernetes-node@0.1.19 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.8.3 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-kubernetes-cluster@0.0.15 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/catalog-model@1.7.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/plugin-kubernetes-react@0.4.3 + - @backstage/plugin-kubernetes-common@0.8.3 + +## @backstage/plugin-kubernetes-common@0.8.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.7.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-kubernetes-node@0.1.19 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.8.3 + +## @backstage/plugin-kubernetes-react@0.4.3 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/catalog-model@1.7.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.8.3 + +## @backstage/plugin-notifications@0.3.1 + +### Patch Changes + +- 653f60b: Severity filter label newly contains "Min severity" to better describe range instead of exact value. +- 4a53dd0: Implement icon in backend and show icon in table if available. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-signals-react@0.0.5 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-notifications-common@0.0.5 + +## @backstage/plugin-notifications-node@0.2.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/plugin-signals-node@0.1.11 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-notifications-common@0.0.5 + +## @backstage/plugin-org@0.6.29 + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 8a474f2: Updating docs to use `createFrontendModule` instead +- a159180: Added missing items to `overridableComponents` +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/core-plugin-api@1.9.4 + +## @backstage/plugin-org-react@0.1.28 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/core-plugin-api@1.9.4 + +## @backstage/plugin-permission-backend@0.5.49 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- fcb9356: Deprecated `createRouter` and its router options in favour of the new backend system. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-permission-node@0.8.3 + +### Patch Changes + +- 19ff127: Internal refactor to remove dependencies on the identity and token manager services, which have been removed. Public APIs no longer require the identity service or token manager to be provided. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-permission-react@0.4.26 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.9.4 + - @backstage/config@1.2.0 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-proxy-backend@0.5.6 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- d298e6e: Deprecated `createRouter` and its router options in favour of the new backend system. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-common@1.5.6 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.7.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-scaffolder-node@0.4.11 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/integration@1.15.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.6 + +## @backstage/plugin-scaffolder-node-test-utils@0.1.12 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-test-utils@1.0.0 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-node@0.4.11 + +## @backstage/plugin-search@1.4.16 + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- eca03bd: Added ability to customize the search items within the SidebarSearchModal +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/plugin-search-react@1.8.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/version-bridge@1.0.9 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend@1.5.17 + +### Patch Changes + +- 5726390: Deprecate create router as the legacy backend system will no longer be supported. +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/backend-openapi-utils@0.1.18 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-node@1.3.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-catalog@0.2.2 + +### Patch Changes + +- 19ff127: Internal refactor to remove dependencies on the identity and token manager services, which have been removed. Public APIs no longer require the identity service or token manager to be provided. + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. + +- 5726390: The following collator factories are deprecated, please [migrate](https://backstage.io/docs/backend-system/building-backends/migrating) to the new backend system and follow the instructions below to install collators via module: + + - `DefaultCatalogCollatorFactory`: ; + - `ToolDocumentCollatorFactory`: ; + - `DefaultTechDocsCollatorFactory`: . + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-node@1.3.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-elasticsearch@1.5.6 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- 5726390: Internal refactor to use `LoggerService` and `DatabaseService` instead of the legacy `Logger` and `PluginDatabaseManager` types. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/config@1.2.0 + - @backstage/integration-aws-node@0.1.12 + - @backstage/plugin-search-backend-node@1.3.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-explore@0.2.2 + +### Patch Changes + +- 19ff127: Internal refactor to remove dependencies on the identity and token manager services, which have been removed. Public APIs no longer require the identity service or token manager to be provided. + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. + +- 5726390: The following collator factories are deprecated, please [migrate](https://backstage.io/docs/backend-system/building-backends/migrating) to the new backend system and follow the instructions below to install collators via module: + + - `DefaultCatalogCollatorFactory`: ; + - `ToolDocumentCollatorFactory`: ; + - `DefaultTechDocsCollatorFactory`: . + +- 276f433: Updated dependency `@backstage-community/plugin-explore-common` to `^0.0.5`. + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/config@1.2.0 + - @backstage/plugin-search-backend-node@1.3.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-pg@0.5.35 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- 5726390: Internal refactor to use `LoggerService` and `DatabaseService` instead of the legacy `Logger` and `PluginDatabaseManager` types. +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/config@1.2.0 + - @backstage/plugin-search-backend-node@1.3.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-techdocs@0.2.2 + +### Patch Changes + +- 19ff127: Internal refactor to remove dependencies on the identity and token manager services, which have been removed. Public APIs no longer require the identity service or token manager to be provided. + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. + +- 5726390: The following collator factories are deprecated, please [migrate](https://backstage.io/docs/backend-system/building-backends/migrating) to the new backend system and follow the instructions below to install collators via module: + + - `DefaultCatalogCollatorFactory`: ; + - `ToolDocumentCollatorFactory`: ; + - `DefaultTechDocsCollatorFactory`: . + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/plugin-techdocs-node@1.12.11 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/config@1.2.0 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-node@1.3.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-node@1.3.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-signals@0.0.10 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +- 5add8e1: Added a `SignalsDisplay` extension to allows the signals plugin to be installed in an app as follows: + + ```tsx + export default app.createRoot( + <> + + + + + + {routes} + + , + ); + ``` + + With this in place you can remove the explicit installation via the `plugins` option for `createApp`. + +- 3e9b1a4: Put a name on the `SignalsDisplay` component extension + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-signals-react@0.0.5 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-node@0.1.11 + +### Patch Changes + +- a0f1f0d: Bump the `ws` library +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-react@0.0.5 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 0389801: Fix for `useSignal` returning the inverse value for `isSignalsAvailable`. +- Updated dependencies + - @backstage/core-plugin-api@1.9.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-techdocs@1.10.9 + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. + +- fe94ad8: Fixes left navigation positioning when using mkdocs blog plugin + +- b0206dc: Added support for setting page status with 'new' and 'deprecated' values, allowing visual indication of page status in TechDocs. To use include the following at the top of your markdown file: + + ```markdown + --- + status: new + --- + ``` + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +- c7cb4c0: Add `empty-state:techdocs/entity-content` extension to allow overriding the empty state for the entity page techdocs tab. + +- 97db53e: Enhanced the table hover effect with a lighter color and updated the border radius to align with Backstage's theme styling + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/plugin-techdocs-react@1.2.8 + - @backstage/core-compat-api@0.3.0 + - @backstage/plugin-search-react@1.8.0 + - @backstage/integration-react@1.1.31 + - @backstage/catalog-model@1.7.0 + - @backstage/integration@1.15.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-auth-react@0.1.6 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-search-common@1.2.14 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.38 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/plugin-techdocs@1.10.9 + - @backstage/plugin-catalog@1.23.0 + - @backstage/plugin-techdocs-react@1.2.8 + - @backstage/core-app-api@1.15.0 + - @backstage/plugin-search-react@1.8.0 + - @backstage/integration-react@1.1.31 + - @backstage/test-utils@1.6.0 + - @backstage/core-plugin-api@1.9.4 + +## @backstage/plugin-techdocs-backend@1.10.13 + +### Patch Changes + +- 086c32d: Dedicated token for techdocs cache sync +- 5b679ac: The `createRouter` and its related types has been marked as deprecared. This backend should instead be initialized using the new backend system. +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- 5edd344: Refactor to use injected catalog client in the new backend system +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/plugin-techdocs-node@1.12.11 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-search-backend-module-techdocs@0.2.2 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.14 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-techdocs-react@1.2.8 + - @backstage/integration-react@1.1.31 + - @backstage/integration@1.15.0 + - @backstage/core-plugin-api@1.9.4 + +## @backstage/plugin-techdocs-node@1.12.11 + +### Patch Changes + +- f715f5c: Move `TechdocsContainerRunner` from `publish` to `generate`. +- 4417dd4: Fix typo and unify TechDocs casing in doc strings +- 57da51f: Add support for mapping custom tags in the techdocs yaml parser that validates the mkdocs.yaml file +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- 3606843: Internal fixes to match `testcontainers` update +- 33ebb28: As the `@backstage/backend-common` package is deprecated, we have updated the `techdocs-node` package to stop depending on it. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/integration@1.15.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/plugin-search-common@1.2.14 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-react@1.2.8 + +### Patch Changes + +- 5ee3d27: Fixed issue in useShadowRootElements which could lead to unlimited render loops +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/catalog-model@1.7.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/version-bridge@1.0.9 + - @backstage/config@1.2.0 + +## @backstage/plugin-user-settings@0.8.12 + +### Patch Changes + +- fec8b57: Updated exports to use the new type parameters for extensions and extension blueprints. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- da86ac2: Update README to clarify location of additional tabs example +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/core-app-api@1.15.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-signals-react@0.0.5 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-user-settings-common@0.0.1 + +## @backstage/plugin-user-settings-backend@0.2.24 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- 164ce3e: In preparation to stop supporting to the legacy backend system, the `createRouter` function is now deprecated and we strongly recommend you [migrate](https://backstage.io/docs/backend-system/building-backends/migrating) your backend to the new system. +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- 1b98099: Replaced usage of the deprecated identity service with the new HTTP auth service for the new backend system. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/plugin-signals-node@0.1.11 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-user-settings-common@0.0.1 + +## example-app@0.2.101 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/plugin-techdocs@1.10.9 + - @backstage/plugin-catalog@1.23.0 + - @backstage/plugin-home@0.7.10 + - @backstage/cli@0.27.1 + - @backstage/plugin-techdocs-react@1.2.8 + - @backstage/core-app-api@1.15.0 + - @backstage/frontend-app-api@0.9.0 + - @backstage/plugin-catalog-import@0.12.3 + - @backstage/plugin-catalog-graph@0.4.9 + - @backstage/plugin-user-settings@0.8.12 + - @backstage/plugin-search-react@1.8.0 + - @backstage/plugin-kubernetes@0.11.14 + - @backstage/plugin-scaffolder@1.25.0 + - @backstage/plugin-api-docs@0.11.9 + - @backstage/plugin-devtools@0.1.18 + - @backstage/plugin-search@1.4.16 + - @backstage/plugin-org@0.6.29 + - @backstage/integration-react@1.1.31 + - @backstage/plugin-notifications@0.3.1 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-scaffolder-react@1.12.0 + - @backstage/app-defaults@1.5.11 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-auth-react@0.1.6 + - @backstage/plugin-catalog-unprocessed-entities@0.2.8 + - @backstage/plugin-kubernetes-cluster@0.0.15 + - @backstage/plugin-permission-react@0.4.26 + - @backstage/plugin-signals@0.0.10 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.14 + - @backstage/config@1.2.0 + - @backstage/plugin-search-common@1.2.14 + +## example-app-next@0.0.15 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-catalog-react@1.13.0 + - @backstage/plugin-techdocs@1.10.9 + - @backstage/plugin-catalog@1.23.0 + - @backstage/plugin-home@0.7.10 + - @backstage/cli@0.27.1 + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/plugin-techdocs-react@1.2.8 + - @backstage/core-app-api@1.15.0 + - @backstage/frontend-app-api@0.9.0 + - @backstage/core-compat-api@0.3.0 + - @backstage/plugin-catalog-import@0.12.3 + - @backstage/plugin-catalog-graph@0.4.9 + - @backstage/plugin-user-settings@0.8.12 + - @backstage/plugin-search-react@1.8.0 + - @backstage/plugin-kubernetes@0.11.14 + - @backstage/plugin-scaffolder@1.25.0 + - @backstage/plugin-api-docs@0.11.9 + - @backstage/plugin-search@1.4.16 + - @backstage/plugin-org@0.6.29 + - @backstage/integration-react@1.1.31 + - @backstage/frontend-defaults@0.1.0 + - @backstage/plugin-notifications@0.3.1 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-scaffolder-react@1.12.0 + - @backstage/plugin-app@0.1.0 + - @backstage/app-defaults@1.5.11 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/plugin-auth-react@0.1.6 + - @backstage/plugin-catalog-unprocessed-entities@0.2.8 + - @backstage/plugin-kubernetes-cluster@0.0.15 + - @backstage/plugin-permission-react@0.4.26 + - @backstage/plugin-signals@0.0.10 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.14 + - @backstage/plugin-app-visualizer@0.1.10 + - @backstage/config@1.2.0 + - @backstage/plugin-search-common@1.2.14 + +## app-next-example-plugin@0.0.15 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/frontend-plugin-api@0.8.0 + +## example-backend@0.0.30 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/plugin-kubernetes-backend@0.18.6 + - @backstage/plugin-signals-backend@0.2.0 + - @backstage/plugin-techdocs-backend@1.10.13 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-search-backend@1.5.17 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-devtools-backend@0.4.0 + - @backstage/plugin-app-backend@0.3.74 + - @backstage/plugin-notifications-backend@0.4.0 + - @backstage/plugin-scaffolder-backend@1.25.0 + - @backstage/plugin-auth-backend@0.23.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-backend@1.26.0 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.0 + - @backstage/plugin-search-backend-module-techdocs@0.2.2 + - @backstage/plugin-search-backend-module-catalog@0.2.2 + - @backstage/plugin-search-backend-module-explore@0.2.2 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/plugin-permission-backend@0.5.49 + - @backstage/plugin-proxy-backend@0.5.6 + - @backstage/plugin-scaffolder-backend-module-github@0.5.0 + - @backstage/plugin-auth-backend-module-github-provider@0.2.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.0 + - @backstage/plugin-catalog-backend-module-openapi@0.2.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.0 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.0 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-node@1.3.2 + +## example-backend-legacy@0.2.102 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-common@0.25.0 + - @backstage/plugin-kubernetes-backend@0.18.6 + - @backstage/plugin-signals-backend@0.2.0 + - @backstage/plugin-signals-node@0.1.11 + - @backstage/plugin-techdocs-backend@1.10.13 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-search-backend@1.5.17 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.5.0 + - @backstage/plugin-devtools-backend@0.4.0 + - @backstage/plugin-app-backend@0.3.74 + - @backstage/plugin-scaffolder-backend@1.25.0 + - @backstage/plugin-auth-backend@0.23.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-backend@1.26.0 + - @backstage/catalog-client@1.7.0 + - @backstage/plugin-search-backend-module-techdocs@0.2.2 + - @backstage/plugin-search-backend-module-catalog@0.2.2 + - @backstage/plugin-search-backend-module-explore@0.2.2 + - @backstage/plugin-permission-node@0.8.3 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/plugin-events-backend@0.3.12 + - @backstage/plugin-permission-backend@0.5.49 + - @backstage/plugin-proxy-backend@0.5.6 + - @backstage/plugin-search-backend-module-elasticsearch@1.5.6 + - @backstage/plugin-search-backend-module-pg@0.5.35 + - @backstage/integration@1.15.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-node@1.3.2 + +## e2e-test@0.2.20 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.19 + - @backstage/cli-common@0.1.14 + - @backstage/errors@1.2.4 + +## @internal/frontend@0.0.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.8.0 + - @backstage/version-bridge@1.0.9 + - @backstage/types@1.1.1 + +## techdocs-cli-embedded-app@0.2.100 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/plugin-techdocs@1.10.9 + - @backstage/plugin-catalog@1.23.0 + - @backstage/cli@0.27.1 + - @backstage/plugin-techdocs-react@1.2.8 + - @backstage/core-app-api@1.15.0 + - @backstage/integration-react@1.1.31 + - @backstage/catalog-model@1.7.0 + - @backstage/app-defaults@1.5.11 + - @backstage/test-utils@1.6.0 + - @backstage/core-plugin-api@1.9.4 + - @backstage/theme@0.5.7 + - @backstage/config@1.2.0 + +## yarn-plugin-backstage@0.0.2 + +### Patch Changes + +- bd32d5a: Add additional check before packing workspace to verify that all backstage:^ versions have been removed. +- Updated dependencies + - @backstage/cli-common@0.1.14 + - @backstage/release-manifests@0.0.11 + +## @internal/plugin-todo-list@1.0.31 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.15.0 + - @backstage/core-plugin-api@1.9.4 + +## @internal/plugin-todo-list-backend@1.0.31 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/plugin-auth-node@0.5.2 + - @backstage/errors@1.2.4 diff --git a/docs/releases/v1.31.0-next.2-changelog.md b/docs/releases/v1.31.0-next.2-changelog.md new file mode 100644 index 0000000000..1547a48332 --- /dev/null +++ b/docs/releases/v1.31.0-next.2-changelog.md @@ -0,0 +1,2415 @@ +# Release v1.31.0-next.2 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.31.0-next.2](https://backstage.github.io/upgrade-helper/?to=1.31.0-next.2) + +## @backstage/backend-app-api@1.0.0-next.2 + +### Major Changes + +- ec1b4be: Release 1.0 of the new backend system! :tada: + + The backend system is finally getting promoted to 1.0.0. This means that the API is now stable and breaking changes should not occur until version 2.0.0, see our [package versioning policy](https://backstage.io/docs/overview/versioning-policy/#package-versioning-policy) for more information what this means. + + This release also marks the end of the old backend system based on `createRouter` exports. Going forward backend plugins packages will start to deprecate and later this year remove exports supporting the old backend system. If you would like to help out with this transition, see or consult the [migration guide](https://backstage.io/docs/backend-system/building-plugins-and-modules/migrating/#remove-support-for-the-old-backend-system). + +### Patch Changes + +- 6ed9264: chore(deps): bump `path-to-regexp` from 6.2.2 to 8.0.0 +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config-loader@1.9.1-next.0 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/backend-plugin-api@1.0.0-next.2 + +### Major Changes + +- ec1b4be: Release 1.0 of the new backend system! :tada: + + The backend system is finally getting promoted to 1.0.0. This means that the API is now stable and breaking changes should not occur until version 2.0.0, see our [package versioning policy](https://backstage.io/docs/overview/versioning-policy/#package-versioning-policy) for more information what this means. + + This release also marks the end of the old backend system based on `createRouter` exports. Going forward backend plugins packages will start to deprecate and later this year remove exports supporting the old backend system. If you would like to help out with this transition, see or consult the [migration guide](https://backstage.io/docs/backend-system/building-plugins-and-modules/migrating/#remove-support-for-the-old-backend-system). + +### Patch Changes + +- 8052b9b: Add a `toJSON` on refs so that they can appear in expectations in jest tests +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/backend-test-utils@1.0.0-next.2 + +### Major Changes + +- ec1b4be: Release 1.0 of the new backend system! :tada: + + The backend system is finally getting promoted to 1.0.0. This means that the API is now stable and breaking changes should not occur until version 2.0.0, see our [package versioning policy](https://backstage.io/docs/overview/versioning-policy/#package-versioning-policy) for more information what this means. + + This release also marks the end of the old backend system based on `createRouter` exports. Going forward backend plugins packages will start to deprecate and later this year remove exports supporting the old backend system. If you would like to help out with this transition, see or consult the [migration guide](https://backstage.io/docs/backend-system/building-plugins-and-modules/migrating/#remove-support-for-the-old-backend-system). + +### Patch Changes + +- f421d2a: Make MySQL pool settings a bit more lax +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-app-api@1.0.0-next.2 + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/backend-defaults@0.5.0-next.2 + +### Minor Changes + +- baeef13: **BREAKING** Removed `createLifecycleMiddleware` and `LifecycleMiddlewareOptions` to clean up API surface. These exports have no external usage and do not provide value in its current form. If you were using these exports, please reach out to the maintainers to discuss your use case. + +### Patch Changes + +- 6ed9264: chore(deps): bump `path-to-regexp` from 6.2.2 to 8.0.0 +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-app-api@1.0.0-next.2 + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/cli-node@0.2.8-next.0 + - @backstage/integration@1.15.0-next.0 + - @backstage/config-loader@1.9.1-next.0 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/catalog-client@1.7.0-next.1 + +### Minor Changes + +- 78475c3: Allow offset mode paging in entity list provider + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + +## @backstage/dev-utils@1.1.0-next.2 + +### Minor Changes + +- 10b1452: Allow using translations in `createDevApp` + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/app-defaults@1.5.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/theme@0.5.7-next.0 + - @backstage/catalog-model@1.6.0 + +## @backstage/integration@1.15.0-next.0 + +### Minor Changes + +- 1573014: The Gerrit integration can now resolve Gitiles urls that point to the following + refs: + + - HEAD + - A SHA + - Tag + - Branch + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-auth0-provider@0.1.0-next.0 + +### Minor Changes + +- d908d8c: New module for `@backstage/plugin-auth-backend` that adds a Auth0 auth provider. + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.0-next.0 + +### Minor Changes + +- 527d973: New module for `@backstage/plugin-auth-backend` that adds a `Bitbucket Server` auth provider. + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-catalog@1.23.0-next.2 + +### Minor Changes + +- 78475c3: Allow offset mode paging in entity list provider + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/plugin-search-react@1.8.0-next.2 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/plugin-permission-react@0.4.26-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-scaffolder-common@1.5.5 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-catalog-backend@1.26.0-next.2 + +### Minor Changes + +- 78475c3: Allow offset mode paging in entity list provider + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/integration@1.15.0-next.0 + - @backstage/backend-openapi-utils@0.1.18-next.2 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-module-catalog@0.2.2-next.2 + +## @backstage/plugin-catalog-react@1.13.0-next.2 + +### Minor Changes + +- 78475c3: Allow offset mode paging in entity list provider + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/plugin-permission-react@0.4.26-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-scaffolder@1.25.0-next.2 + +### Minor Changes + +- 860ad3a: Expose styles for TemplateEditor, TemplateFormPreviewer and CustomFieldExplorer +- 4baad34: Added support for `omitExtraData` and `liveOmit` for rjsf in the scaffolder + +### Patch Changes + +- b0a5c9f: The `ui:options` for `OwnedEntityPicker` field are now passed to `EntityPicker`. This allows you to use any `ui:options` which `EntityPicker` accepts in the `OwnedEntityPicker` field including `allowArbitraryValues` and `defaultNamespace`. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- fa9d8da: Updated dependency `@rjsf/utils` to `5.20.1`. + Updated dependency `@rjsf/core` to `5.20.1`. + Updated dependency `@rjsf/material-ui` to `5.20.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.20.1`. +- 0944334: Removed duplicated titles on Scaffolder `TemplateListPage` component +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/plugin-scaffolder-react@1.12.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/integration@1.15.0-next.0 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/plugin-permission-react@0.4.26-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-scaffolder-common@1.5.5 + +## @backstage/plugin-scaffolder-backend@1.25.0-next.2 + +### Minor Changes + +- df9ae9e: Added scaffolder action publish:bitbucketCloud:pull-request + +### Patch Changes + +- f0c6b25: Allow listing file contents with `debug:log` scaffolder action +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/plugin-scaffolder-backend-module-github@0.5.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.23-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0-next.2 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-scaffolder-backend-module-azure@0.2.0-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.0-next.2 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.0-next.2 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.2.0-next.2 + - @backstage/plugin-scaffolder-backend-module-gitea@0.2.0-next.2 + - @backstage/plugin-scaffolder-common@1.5.5 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-react@1.12.0-next.2 + +### Minor Changes + +- 4baad34: Added support for `omitExtraData` and `liveOmit` for rjsf in the scaffolder + +### Patch Changes + +- 1f3c5aa: Fix scaffolder review step issue where schema options are not handled for fields on multi-step templates. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- fa9d8da: Updated dependency `@rjsf/utils` to `5.20.1`. + Updated dependency `@rjsf/core` to `5.20.1`. + Updated dependency `@rjsf/material-ui` to `5.20.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.20.1`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/theme@0.5.7-next.0 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/plugin-permission-react@0.4.26-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.5 + +## @backstage/app-defaults@1.5.11-next.1 + +### Patch Changes + +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-permission-react@0.4.26-next.0 + +## @backstage/backend-common@0.25.0-next.2 + +### Patch Changes + +- 6ed9264: chore(deps): bump `path-to-regexp` from 6.2.2 to 8.0.0 +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- 3606843: Internal fixes to match `testcontainers` update +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config-loader@1.9.1-next.0 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/types@1.1.1 + +## @backstage/backend-dynamic-feature-service@0.4.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-app-api@1.0.0-next.2 + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/cli-node@0.2.8-next.0 + - @backstage/plugin-catalog-backend@1.26.0-next.2 + - @backstage/config-loader@1.9.1-next.0 + - @backstage/plugin-events-backend@0.3.12-next.2 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.25-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/backend-openapi-utils@0.1.18-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/errors@1.2.4 + +## @backstage/cli@0.27.1-next.2 + +### Patch Changes + +- 16ffdd6: Remove direct `vite` dependency + +- 8069f4a: Update Scaffolder module template to add itself to the backend + +- 0e1a817: The app build process now outputs an additional `index.html.tmpl` file. This is an non-templated version of the `index.html` file, which can be used to delay templating until runtime. + + The new `index.html.tmpl` file also sets a `backstage-public-path` meta tag to be templated at runtime. The meta tag is in turn picked up by the new `@backstage/cli/config/webpack-public-path.js` entry point script, which uses it to set the runtime public path of the Webpack bundle. + +- d29fc1b: Updated dependency `@module-federation/enhanced` to `^0.6.0`. + +- 4ebf36f: Upgrade to `vite@v5` + +- 2d3caaf: The build commands now support the new `backstage.inline` flag in `package.json`, which causes the contents of private packages to be inlined into the consuming package, rather than be treated as an external dependency. + +- 3d88455: Add support for `backstage:^` version ranges to versions:bump when using the experimental yarn plugin + +- Updated dependencies + - @backstage/cli-node@0.2.8-next.0 + - @backstage/integration@1.15.0-next.0 + - @backstage/config-loader@1.9.1-next.0 + - @backstage/eslint-plugin@0.1.9-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/release-manifests@0.0.11 + - @backstage/types@1.1.1 + +## @backstage/cli-node@0.2.8-next.0 + +### Patch Changes + +- 0c70f43: Add definition for the new `backstage.inline` field in `package.json`. +- Updated dependencies + - @backstage/cli-common@0.1.14 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/config-loader@1.9.1-next.0 + +### Patch Changes + +- ef3c507: Updated dependency `typescript-json-schema` to `^0.65.0`. +- Updated dependencies + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/core-app-api@1.14.3-next.0 + +### Patch Changes + +- ea69e46: The `defaultConfigLoader` now also reads configuration from scripts tags with `type="backstage.io/config"`. The tag is expected to contain a JSON-serialized array of `AppConfig` objects. If any of these script tags are present, the injected runtime configuration in the static assets will no longer be used. +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/core-compat-api@0.3.0-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/version-bridge@1.0.9-next.0 + +## @backstage/core-components@0.14.11-next.1 + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking +- 0944334: Removed default title set to Unknown page on `ContentHeaderTitle` component to support usage of component without title prop. +- f325258: Use getOptionalString for optional app.support.items\[].links\[].title +- af4c146: Support menu items should not be buttons in favour of links +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- dbbd93e: Internal update to match recent React types +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/theme@0.5.7-next.0 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/core-plugin-api@1.9.4-next.0 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/create-app@0.5.19-next.2 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.14 + +## @backstage/eslint-plugin@0.1.9-next.0 + +### Patch Changes + +- 08895e3: Added support for linting dependencies on workspace packages with the `backstage.inline` flag. + +## @backstage/frontend-app-api@0.9.0-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-defaults@0.1.0-next.1 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/frontend-defaults@0.1.0-next.1 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/plugin-app@0.1.0-next.2 + - @backstage/frontend-app-api@0.9.0-next.2 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/frontend-plugin-api@0.8.0-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 043d7cd: Internal refactor +- 2a61422: The `factory` option is no longer required when overriding an extension. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/types@1.1.1 + +## @backstage/frontend-test-utils@0.2.0-next.2 + +### Patch Changes + +- 2a61422: The extension tester will no longer unconditionally enable any additional extensions that have been added. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 043d7cd: Internal refactor +- Updated dependencies + - @backstage/test-utils@1.6.0-next.1 + - @backstage/plugin-app@0.1.0-next.2 + - @backstage/frontend-app-api@0.9.0-next.2 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/integration-react@1.1.31-next.0 + +### Patch Changes + +- 8a9d797: Remove unnecessary broad permissions from Gitlab `SCMAuth` + + Newer versions of Gitlab (after 2019) do not require the broad api permissions to write to repos. + +- Updated dependencies + - @backstage/integration@1.15.0-next.0 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/config@1.2.0 + +## @backstage/repo-tools@0.9.7-next.2 + +### Patch Changes + +- 1a8837e: Avoid generating API reports for packages with `backstage.inline` set. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/cli-node@0.2.8-next.0 + - @backstage/config-loader@1.9.1-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/cli-common@0.1.14 + - @backstage/errors@1.2.4 + +## @techdocs/cli@1.8.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/plugin-techdocs-node@1.12.11-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + +## @backstage/test-utils@1.6.0-next.1 + +### Patch Changes + +- b537bd7: Allow custom star icons to be provided via the `star` and `unstarred` icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-permission-react@0.4.26-next.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/theme@0.5.7-next.0 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +## @backstage/version-bridge@1.0.9-next.0 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. + +## @backstage/plugin-api-docs@0.11.9-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 8a474f2: Updating docs to use `createFrontendModule` instead +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/plugin-catalog@1.23.0-next.2 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/plugin-permission-react@0.4.26-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/plugin-catalog-common@1.0.26 + +## @backstage/plugin-app@0.1.0-next.2 + +### Patch Changes + +- 57bf6ae: Fix issue with `AlertDisplay` and other components defined with `AppRootElementBlueprint` not being rendered when at the `SignInWrapper` +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-permission-react@0.4.26-next.0 + +## @backstage/plugin-app-backend@0.3.74-next.2 + +### Patch Changes + +- 590fb2d: **BREAKING**: The app backend now supports the new `index.html.tmpl` output from `@backstage/cli`. If available, the `index.html` will be templated at runtime with the current configuration of the app backend. + + This is marked as a breaking change because you must now supply the app build-time configuration to the backend. This change also affects the public path behavior, where it is no longer necessary to build the app with the correct public path upfront. You now only need to supply a correct `app.baseUrl` to the app backend plugin at runtime. + + An effect that this change has is that the `index.html` will now contain and present the frontend configuration in an easily readable way, which can aid in debugging. This data was always available in the frontend, but it was injected and hidden in the static bundle. + + This templating behavior is enabled by default, but it can be disabled by setting the `app.disableConfigInjection` configuration option to `true`. + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config-loader@1.9.1-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.25-next.2 + +## @backstage/plugin-app-node@0.1.25-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config-loader@1.9.1-next.0 + +## @backstage/plugin-app-visualizer@0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + +## @backstage/plugin-auth-backend@0.23.0-next.2 + +### Patch Changes + +- 527d973: Migrated the `Bitbucket Server` auth provider to be implemented using the new `@backstage/plugin-auth-backend-module-bitbucket-server-provider` module. +- d908d8c: Migrated the `Auth0` auth provider to be implemented using the new `@backstage/plugin-auth-backend-module-auth0-provider` module. +- 92118cd: Updated dependency `@node-saml/passport-saml` to `^5.0.0`. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/plugin-auth-backend-module-auth0-provider@0.1.0-next.0 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.3.0-next.2 + - @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.0-next.2 + - @backstage/plugin-auth-backend-module-github-provider@0.2.0-next.2 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.2.0-next.2 + - @backstage/plugin-auth-backend-module-google-provider@0.2.0-next.2 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.2.0-next.2 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.3.0-next.2 + - @backstage/plugin-auth-backend-module-oidc-provider@0.3.0-next.2 + - @backstage/plugin-auth-backend-module-okta-provider@0.1.0-next.2 + - @backstage/plugin-auth-backend-module-onelogin-provider@0.2.0-next.2 + - @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.2.0-next.2 + - @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.0-next.2 + - @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.0-next.2 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.0-next.2 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.0-next.2 + - @backstage/plugin-catalog-node@1.12.7-next.2 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.3.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/plugin-auth-backend@0.23.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.2.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.2.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-google-provider@0.2.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-guest-provider@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.2.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.3.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.3.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/plugin-auth-backend@0.23.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-okta-provider@0.1.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-onelogin-provider@0.2.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.2.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.3.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + +## @backstage/plugin-auth-node@0.5.2-next.2 + +### Patch Changes + +- d908d8c: Accepts an optional options object in the `PassportOAuthAuthenticatorHelper.authenticate` method. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-react@0.1.6-next.1 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-bitbucket-cloud-common@0.2.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.15.0-next.0 + +## @backstage/plugin-catalog-backend-module-aws@0.4.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-kubernetes-common@0.8.2 + +## @backstage/plugin-catalog-backend-module-azure@0.2.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/backend-openapi-utils@0.1.18-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-node@1.12.7-next.2 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.3.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.23-next.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.2.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-node@1.12.7-next.2 + +## @backstage/plugin-catalog-backend-module-gcp@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-kubernetes-common@0.8.2 + +## @backstage/plugin-catalog-backend-module-gerrit@0.2.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-node@1.12.7-next.2 + +## @backstage/plugin-catalog-backend-module-github@0.7.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/plugin-catalog-backend@1.26.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-catalog-backend-module-github-org@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-backend-module-github@0.7.3-next.2 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-catalog-backend-module-gitlab@0.4.2-next.2 + +### Patch Changes + +- 0476be3: Add the `relations` array to allow Backstage to mirror GitLab's membership behavior, including descendant, inherited, and shared-from-group memberships. + + The previous `allowInherited` config option will be deprecated in future versions. Use the `relations` array with the `INHERITED` option instead. + + ```yaml + catalog: + providers: + gitlab: + development: + relations: + - INHERITED + ``` + +- Updated dependencies + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-catalog-backend-module-gitlab-org@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-catalog-backend-module-gitlab@0.4.2-next.2 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.5.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-catalog-backend@1.26.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-backend-module-ldap@0.9.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + +## @backstage/plugin-catalog-backend-module-logs@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-catalog-backend@1.26.0-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-catalog-backend-module-msgraph@0.6.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + +## @backstage/plugin-catalog-backend-module-openapi@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-catalog-backend@1.26.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.2.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.12.7-next.2 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-scaffolder-common@1.5.5 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.5.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-catalog-unprocessed-entities-common@0.0.4 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-graph@0.4.9-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 8a474f2: Updating docs to use `createFrontendModule` instead +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-import@0.12.3-next.2 + +### Patch Changes + +- f3c90da: Support button title should be contained in a single menu item +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/integration@1.15.0-next.0 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-common@1.0.26 + +## @backstage/plugin-catalog-node@1.12.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-unprocessed-entities@0.2.8-next.1 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-config-schema@0.1.59-next.1 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-devtools@0.1.18-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/plugin-permission-react@0.4.26-next.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-devtools-common@0.1.12 + +## @backstage/plugin-devtools-backend@0.4.0-next.2 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config-loader@1.9.1-next.0 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-devtools-common@0.1.12 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-events-backend@0.3.12-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-events-backend-module-aws-sqs@0.4.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-events-backend-module-azure@0.2.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.2.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-events-backend-module-gerrit@0.2.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-events-backend-module-github@0.2.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-events-backend-module-gitlab@0.2.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-events-backend-test-utils@0.1.35-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-events-node@0.4.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + +## @backstage/plugin-home@0.7.10-next.2 + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- fa9d8da: Updated dependency `@rjsf/utils` to `5.20.1`. + Updated dependency `@rjsf/core` to `5.20.1`. + Updated dependency `@rjsf/material-ui` to `5.20.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.20.1`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-home-react@0.1.17-next.1 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-home-react@0.1.17-next.1 + +### Patch Changes + +- fa9d8da: Updated dependency `@rjsf/utils` to `5.20.1`. + Updated dependency `@rjsf/core` to `5.20.1`. + Updated dependency `@rjsf/material-ui` to `5.20.1`. + Updated dependency `@rjsf/validator-ajv8` to `5.20.1`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + +## @backstage/plugin-kubernetes@0.11.14-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/plugin-kubernetes-react@0.4.3-next.1 + - @backstage/catalog-model@1.6.0 + - @backstage/plugin-kubernetes-common@0.8.2 + +## @backstage/plugin-kubernetes-backend@0.18.6-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/plugin-kubernetes-node@0.1.19-next.2 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-kubernetes-common@0.8.2 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-kubernetes-cluster@0.0.15-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/plugin-kubernetes-react@0.4.3-next.1 + - @backstage/catalog-model@1.6.0 + - @backstage/plugin-kubernetes-common@0.8.2 + +## @backstage/plugin-kubernetes-node@0.1.19-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.8.2 + +## @backstage/plugin-kubernetes-react@0.4.3-next.1 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.8.2 + +## @backstage/plugin-notifications@0.3.1-next.2 + +### Patch Changes + +- 653f60b: Severity filter label newly contains "Min severity" to better describe range instead of exact value. +- 4a53dd0: Implement icon in backend and show icon in table if available. +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-signals-react@0.0.5-next.1 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-notifications-common@0.0.5 + +## @backstage/plugin-notifications-backend@0.4.0-next.2 + +### Patch Changes + +- 4a53dd0: Implement icon in backend and show icon in table if available. +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + - @backstage/plugin-notifications-common@0.0.5 + - @backstage/plugin-notifications-node@0.2.6-next.2 + - @backstage/plugin-signals-node@0.1.11-next.2 + +## @backstage/plugin-notifications-backend-module-email@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/integration-aws-node@0.1.12 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-notifications-common@0.0.5 + - @backstage/plugin-notifications-node@0.2.6-next.2 + +## @backstage/plugin-notifications-node@0.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/catalog-model@1.6.0 + - @backstage/plugin-notifications-common@0.0.5 + - @backstage/plugin-signals-node@0.1.11-next.2 + +## @backstage/plugin-org@0.6.29-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 8a474f2: Updating docs to use `createFrontendModule` instead +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/plugin-catalog-common@1.0.26 + +## @backstage/plugin-org-react@0.1.28-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/catalog-model@1.6.0 + +## @backstage/plugin-permission-backend@0.5.49-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-permission-node@0.8.3-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-permission-react@0.4.26-next.0 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/config@1.2.0 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-proxy-backend@0.5.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-azure@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.0-next.2 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.0-next.2 + +### Patch Changes + +- df9ae9e: Added scaffolder action publish:bitbucketCloud:pull-request +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-bitbucket-cloud-common@0.2.23-next.0 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.0-next.2 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.3.0-next.2 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-gcp@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-gitea@0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-github@0.5.0-next.2 + +### Patch Changes + +- 22a19e6: Added the ability for the actions `publish:github` and `github:repo:create` to take inputs for 'custom properties' for organization repositories. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0-next.2 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-notifications@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-notifications-common@0.0.5 + - @backstage/plugin-notifications-node@0.2.6-next.2 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-rails@0.5.0-next.2 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.2.0-next.2 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.4.0-next.2 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + - @backstage/plugin-scaffolder-node-test-utils@0.1.12-next.2 + +## @backstage/plugin-scaffolder-node@0.4.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.5 + +## @backstage/plugin-scaffolder-node-test-utils@0.1.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-test-utils@1.0.0-next.2 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-node@0.4.11-next.2 + +## @backstage/plugin-search@1.4.16-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/plugin-search-react@1.8.0-next.2 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend@1.5.17-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/backend-openapi-utils@0.1.18-next.2 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-catalog@0.2.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-elasticsearch@1.5.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/integration-aws-node@0.1.12 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-explore@0.2.2-next.2 + +### Patch Changes + +- 276f433: Updated dependency `@backstage-community/plugin-explore-common` to `^0.0.5`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-pg@0.5.35-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-techdocs@0.2.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/plugin-techdocs-node@1.12.11-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-node@1.3.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-react@1.8.0-next.2 + +### Patch Changes + +- dbbd93e: Internal update to match recent React types +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/theme@0.5.7-next.0 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-signals@0.0.10-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-signals-react@0.0.5-next.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-signals-backend@0.2.0-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.4.0-next.2 + - @backstage/plugin-signals-node@0.1.11-next.2 + +## @backstage/plugin-signals-node@0.1.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.4.0-next.2 + +## @backstage/plugin-signals-react@0.0.5-next.1 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-techdocs@1.10.9-next.2 + +### Patch Changes + +- c891b69: Add `FavoriteToggle` in `core-components` to standardise favorite marking +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- 97db53e: Enhanced the table hover effect with a lighter color and updated the border radius to align with Backstage's theme styling +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/plugin-search-react@1.8.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-auth-react@0.1.6-next.1 + - @backstage/plugin-techdocs-react@1.2.8-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-search-common@1.2.14 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.38-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/plugin-techdocs@1.10.9-next.2 + - @backstage/plugin-catalog@1.23.0-next.2 + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/test-utils@1.6.0-next.1 + - @backstage/plugin-search-react@1.8.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/plugin-techdocs-react@1.2.8-next.2 + +## @backstage/plugin-techdocs-backend@1.10.13-next.2 + +### Patch Changes + +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/plugin-techdocs-node@1.12.11-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-backend-module-techdocs@0.2.2-next.2 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.14-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/integration@1.15.0-next.0 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/plugin-techdocs-react@1.2.8-next.2 + +## @backstage/plugin-techdocs-node@1.12.11-next.2 + +### Patch Changes + +- 57da51f: Add support for mapping custom tags in the techdocs yaml parser that validates the mkdocs.yaml file +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- 3606843: Internal fixes to match `testcontainers` update +- Updated dependencies + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/plugin-search-common@1.2.14 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-react@1.2.8-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-user-settings@0.8.12-next.2 + +### Patch Changes + +- 836127c: Updated dependency `@testing-library/react` to `^16.0.0`. +- da86ac2: Update README to clarify location of additional tabs example +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-signals-react@0.0.5-next.1 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-user-settings-common@0.0.1 + +## @backstage/plugin-user-settings-backend@0.2.24-next.2 + +### Patch Changes + +- 5d1670f: Update README installation instructions +- c2b63ab: Updated dependency `supertest` to `^7.0.0`. +- Updated dependencies + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-signals-node@0.1.11-next.2 + - @backstage/plugin-user-settings-common@0.0.1 + +## example-app@0.2.101-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/plugin-techdocs@1.10.9-next.2 + - @backstage/plugin-catalog@1.23.0-next.2 + - @backstage/plugin-home@0.7.10-next.2 + - @backstage/cli@0.27.1-next.2 + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/plugin-scaffolder@1.25.0-next.2 + - @backstage/plugin-notifications@0.3.1-next.2 + - @backstage/plugin-scaffolder-react@1.12.0-next.2 + - @backstage/app-defaults@1.5.11-next.1 + - @backstage/plugin-catalog-import@0.12.3-next.2 + - @backstage/plugin-search-react@1.8.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-app-api@0.9.0-next.2 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-api-docs@0.11.9-next.2 + - @backstage/plugin-auth-react@0.1.6-next.1 + - @backstage/plugin-catalog-graph@0.4.9-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.2.8-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.15-next.2 + - @backstage/plugin-kubernetes@0.11.14-next.2 + - @backstage/plugin-org@0.6.29-next.2 + - @backstage/plugin-permission-react@0.4.26-next.0 + - @backstage/plugin-search@1.4.16-next.2 + - @backstage/plugin-signals@0.0.10-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.14-next.2 + - @backstage/plugin-techdocs-react@1.2.8-next.2 + - @backstage/plugin-user-settings@0.8.12-next.2 + - @backstage/plugin-devtools@0.1.18-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-search-common@1.2.14 + +## example-app-next@0.0.15-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-catalog-react@1.13.0-next.2 + - @backstage/plugin-techdocs@1.10.9-next.2 + - @backstage/plugin-catalog@1.23.0-next.2 + - @backstage/plugin-home@0.7.10-next.2 + - @backstage/cli@0.27.1-next.2 + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/plugin-scaffolder@1.25.0-next.2 + - @backstage/plugin-notifications@0.3.1-next.2 + - @backstage/plugin-scaffolder-react@1.12.0-next.2 + - @backstage/app-defaults@1.5.11-next.1 + - @backstage/plugin-catalog-import@0.12.3-next.2 + - @backstage/plugin-app@0.1.0-next.2 + - @backstage/plugin-search-react@1.8.0-next.2 + - @backstage/core-compat-api@0.3.0-next.2 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/frontend-app-api@0.9.0-next.2 + - @backstage/frontend-defaults@0.1.0-next.1 + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-api-docs@0.11.9-next.2 + - @backstage/plugin-auth-react@0.1.6-next.1 + - @backstage/plugin-catalog-graph@0.4.9-next.2 + - @backstage/plugin-catalog-unprocessed-entities@0.2.8-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.15-next.2 + - @backstage/plugin-kubernetes@0.11.14-next.2 + - @backstage/plugin-org@0.6.29-next.2 + - @backstage/plugin-permission-react@0.4.26-next.0 + - @backstage/plugin-search@1.4.16-next.2 + - @backstage/plugin-signals@0.0.10-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.14-next.2 + - @backstage/plugin-techdocs-react@1.2.8-next.2 + - @backstage/plugin-user-settings@0.8.12-next.2 + - @backstage/plugin-app-visualizer@0.1.10-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-search-common@1.2.14 + +## app-next-example-plugin@0.0.15-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/frontend-plugin-api@0.8.0-next.2 + +## example-backend@0.0.30-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/plugin-devtools-backend@0.4.0-next.2 + - @backstage/plugin-scaffolder-backend@1.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/plugin-auth-backend@0.23.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/plugin-catalog-backend@1.26.0-next.2 + - @backstage/plugin-app-backend@0.3.74-next.2 + - @backstage/plugin-notifications-backend@0.4.0-next.2 + - @backstage/plugin-scaffolder-backend-module-github@0.5.0-next.2 + - @backstage/plugin-auth-backend-module-github-provider@0.2.0-next.2 + - @backstage/plugin-kubernetes-backend@0.18.6-next.2 + - @backstage/plugin-permission-backend@0.5.49-next.2 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/plugin-search-backend@1.5.17-next.2 + - @backstage/plugin-signals-backend@0.2.0-next.2 + - @backstage/plugin-techdocs-backend@1.10.13-next.2 + - @backstage/plugin-search-backend-module-explore@0.2.2-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.0-next.2 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.0-next.2 + - @backstage/plugin-catalog-backend-module-openapi@0.2.0-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0-next.2 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.0-next.2 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.0-next.2 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-proxy-backend@0.5.6-next.2 + - @backstage/plugin-search-backend-module-catalog@0.2.2-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.2.2-next.2 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + +## example-backend-legacy@0.2.102-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.0-next.2 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.5.0-next.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.5.0-next.2 + - @backstage/plugin-devtools-backend@0.4.0-next.2 + - @backstage/plugin-scaffolder-backend@1.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/plugin-auth-backend@0.23.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/catalog-client@1.7.0-next.1 + - @backstage/plugin-catalog-backend@1.26.0-next.2 + - @backstage/plugin-app-backend@0.3.74-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/plugin-events-backend@0.3.12-next.2 + - @backstage/plugin-kubernetes-backend@0.18.6-next.2 + - @backstage/plugin-permission-backend@0.5.49-next.2 + - @backstage/plugin-permission-node@0.8.3-next.2 + - @backstage/plugin-search-backend@1.5.17-next.2 + - @backstage/plugin-signals-backend@0.2.0-next.2 + - @backstage/plugin-techdocs-backend@1.10.13-next.2 + - @backstage/plugin-search-backend-module-explore@0.2.2-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.0-next.2 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.0-next.2 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-proxy-backend@0.5.6-next.2 + - @backstage/plugin-search-backend-module-catalog@0.2.2-next.2 + - @backstage/plugin-search-backend-module-elasticsearch@1.5.6-next.2 + - @backstage/plugin-search-backend-module-pg@0.5.35-next.2 + - @backstage/plugin-search-backend-module-techdocs@0.2.2-next.2 + - @backstage/plugin-search-backend-node@1.3.2-next.2 + - @backstage/plugin-signals-node@0.1.11-next.2 + +## e2e-test@0.2.20-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.19-next.2 + - @backstage/cli-common@0.1.14 + - @backstage/errors@1.2.4 + +## @internal/frontend@0.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.8.0-next.2 + - @backstage/version-bridge@1.0.9-next.0 + - @backstage/types@1.1.1 + +## techdocs-cli-embedded-app@0.2.100-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/plugin-techdocs@1.10.9-next.2 + - @backstage/plugin-catalog@1.23.0-next.2 + - @backstage/cli@0.27.1-next.2 + - @backstage/core-app-api@1.14.3-next.0 + - @backstage/integration-react@1.1.31-next.0 + - @backstage/app-defaults@1.5.11-next.1 + - @backstage/test-utils@1.6.0-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + - @backstage/theme@0.5.7-next.0 + - @backstage/plugin-techdocs-react@1.2.8-next.2 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + +## @internal/plugin-todo-list@1.0.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.14.11-next.1 + - @backstage/core-plugin-api@1.9.4-next.0 + +## @internal/plugin-todo-list-backend@1.0.31-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.25.0-next.2 + - @backstage/plugin-auth-node@0.5.2-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/errors@1.2.4 diff --git a/docs/releases/v1.31.0.md b/docs/releases/v1.31.0.md new file mode 100644 index 0000000000..37b11c2b56 --- /dev/null +++ b/docs/releases/v1.31.0.md @@ -0,0 +1,144 @@ +--- +id: v1.31.0 +title: v1.31.0 +description: Backstage Release v1.31.0 +--- + +These are the release notes for the v1.31.0 release of [Backstage](https://backstage.io/). + +A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for the hard work in getting this release developed and done. + +## Highlights + +### Backend System 1.0 🎉 + +The time has come for releasing [the new Backend System](https://backstage.io/docs/backend-system/) as stable version 1.0! This means that the API is now stable and breaking changes should not occur until version 2.0, see our [package versioning policy](https://backstage.io/docs/overview/versioning-policy/#package-versioning-policy) for more information about this. + +There is documentation in place both for [migrating backends](https://backstage.io/docs/backend-system/building-backends/migrating) and [migrating plugins](https://backstage.io/docs/backend-system/building-plugins-and-modules/migrating), and we encourage you to start doing so as soon as possible. Going forward, we will increasingly refer to this as "The backend system", and the previous one as "The old backend system". The main Backstage and [community-plugins](https://github.com/backstage/community-plugins) repositories have already been more or less fully migrated over. + +The backend system brings a host of improvements to the way that backends and their features are constructed. Instead of the old convention-based structure that could lead to migration pains, features now fit together with dependency injection like a jigsaw puzzle while leveraging powerful core services and extending each other dynamically with additional behaviors. And this is just scratching the surface of it - do check out [the docs](https://backstage.io/docs/backend-system/)! + +We are very excited about this important milestone after a long period of development and refinement together with our passionate community, and hope that you will find it as refreshing and simple yet powerful as it was envisioned to be. This also lays the foundation for us being able to continue iterating at a high pace without incurring undue end user breakages during upgrades. + +Keep the feedback coming! Either on the [Community Discord](https://discord.gg/backstage-687207715902193673), or [through issues](https://github.com/backstage/backstage/issues/new/choose) on GitHub. Also if you’re looking for a way to help, please take a look at these [backstage](https://github.com/backstage/backstage/issues/26353) and [community plugins](https://github.com/backstage/community-plugins/issues/1176) issues about deprecating old-backend capabilities of already migrated plugins. + +#### Technical details + +At a technical level, the following packages are now on major version 1, and their major version 0 will stop receiving feature updates: + +- `@backstage/backend-app-api` +- `@backstage/backend-plugin-api` +- `@backstage/backend-test-utils` + +The following packages are deprecated and frozen (have stopped receiving updates). Please use the above three packages and `@backstage/backend-defaults` to replace them. You may still use the compatibility adapters in `@backstage/backend-common` short term while performing a gradual migration. + +- `@backstage/backend-common` +- `@backstage/backend-tasks` + +The following core services have been entirely removed. Please migrate to the [new auth system](https://backstage.io/docs/tutorials/auth-service-migration/). + +- `coreServices.identity` +- `coreServices.tokenManager` + +The backwards compatibility with plugins using legacy auth through the token manager service has also been removed. This means that instead of falling back to using the old token manager, requests towards plugins that don't support the new auth system will simply fail. Please make sure that all plugins in your deployment are hosted within a backend instance from the new backend system; a mixture of new and old will lead to auth problems. + +For a lot more detail about what changed and what migration steps might be needed, check the release notes for versions [1.27](https://backstage.io/docs/next/releases/v1.27.0#backend-system-deprecations), [1.28](https://backstage.io/docs/next/releases/v1.28.0#new-backend-system-api-movement-towards-10-release), [1.29](https://backstage.io/docs/next/releases/v1.29.0#breaking-backend-system-deprecations-and-removals) and [1.30](https://backstage.io/docs/releases/v1.30.0#breaking-backend-system-deprecations-and-removals). + +### New Frontend System Updates + +Some new things have landed in this version for the continued work on the New Frontend System. We’ve introduced the `@backstage/plugin-app` package, which is now responsible for housing the built in extensions and providing an entry point to override them using `appPlugin.override()`. + +There’s a new round of deprecations as we move forward with the New Frontend System. Namespace is no longer required to be provided to all extensions, or Blueprints and their respective `.make` or `.makeWithOverrides` methods. This will now default to the ID of the plugin that they are installed alongside. + +We’ve deprecated `createExtensionOverrides` and introduced a new `createFrontendModule` method which replaces it and takes a required `pluginId` for which to associate the extensions that you’re providing to override or compliment the corresponding plugin. + +We’ve also deprecated the `createApp` import from `@backstage/frontend-app-api` and you should now use the same import from `@backstage/frontend-defaults` instead which aligns nicely to the New Backend System patterns. + +There’s more information on the above deprecations and migrations in the [1.31 migration docs](https://backstage.io/docs/frontend-system/architecture/migrations#131) + +We’ve removed V1 extension support, so all extensions should now be defined with the array form of outputs, instead of the previously deprecated object form. + +All previous extension creators that have the Blueprint equivalent have also been removed as they were previously deprecated. Instead of `createExtension` you should migrate to using `Blueprint.make` instead. + +Also the deprecated `.render` method has been removed from `createExtensionTester`, you should be able to use `renderInTestApp` directly with the `tester.reactElement()` instead. + +There’s also [migration docs](https://backstage.io/docs/frontend-system/architecture/migrations#130) for the above removals from the last deprecation ICYMI! + +### Yarn v4 by Default + +When creating a new Backstage repository with `@backstage/create-app`, it will now be powered by Yarn version 4. There have been several improvements in later versions of Yarn, so this should improve the experience when getting started. + +If you are still on version 1 in your pre-existing repository, there’s [a guide](https://backstage.io/docs/tutorials/yarn-migration/) for getting onto newer releases. At this point we recommend moving ahead with moving off of version 1 of Yarn. + +Contributed by [@awanlin](https://github.com/awanlin) in [#26610](https://github.com/backstage/backstage/pull/26610) + +### App Runtime Templating + +The `@backstage/plugin-app-backend` now supports injection of all parts of the frontend configuration at runtime, including the public path and configuration values that are templated into `index.html`. + +The build process for frontend apps in the `@backstage/cli` now outputs an additional `index.html.tmpl` file. If this file is present in the build, the `app` backend will use this file to template a new `index.html` using the configuration that’s present in the `app` backend. This change also switches the full frontend configuration to be injected directly into the `index.html` file inside a `script` tag, rather than deep in the static resources. + +### Guest auth no longer halting production startup + +The `@backstage/plugin-auth-backend-module-guest-provider` module will no longer cause the backend to fail to start up in production, it now instead refuses authentication attempts. The halting of the startup could lead to knock-on effects such as migration tables staying locked. + +### New Catalog Permissions + +The `analyze-location` endpoint of the catalog is now protected by the `catalog.location.analyze` permission, and the `validate-entity` endpoint is now protected by the `catalog.entity.validate` permission. If you have enabled the [permissions system](https://backstage.io/docs/permissions/overview), you may want to adjust your policy accordingly. + +Contributed by [@04kash](https://github.com/04kash) in [#25924](https://github.com/backstage/backstage/pull/25924) + +### GitLab Provider + +The GitLab org entity provider now has a new `relations` configuration option that controls how GitLab memberships are modeled in Backstage. As part of this change the existing `allowInherited` option has been deprecated as it can now be expressed as `relations: [INHERITED]`. + +Contributed by [@elaine-mattos](https://github.com/elaine-mattos) in [#25363](https://github.com/backstage/backstage/pull/25363) + +### Star Icon Overrides + +Allow custom star icons to be provided via the star and unstarred icon overrides. See how to override existing icons in the [Backstage documentation](https://backstage.io/docs/getting-started/app-custom-theme/#custom-icons). + +### Migrated Auth Providers + +The last two backend auth providers - Auth0 and BitBucket Server - were migrated to new backend modules, closing the big community effort in getting the [auth providers migration](https://github.com/backstage/backstage/issues/19476) done. + +Thanks again to everyone who helped out, it is greatly appreciated! + +### Catalog Client Performance Improvements + +A hotspot was found in the code, where calls to the catalog backend to fetch entities performed work on the client side that were better done on the server side. After this update, you may see significant reduction in CPU usage on callers that fetch large amounts of data from the catalog. + +Contributed by [@drodil](https://github.com/drodil) in [#26240](https://github.com/backstage/backstage/pull/26240) + +### New Catalog Service Mocks + +When testing features that interact with the catalog, it’s common to want to inject a mocked or faked catalog client. To make life simpler, we’ve added a `catalogServiceMock` to `@backstage/plugin-catalog-node/testUtils`. Just like many of the `mockServices` from the test backend utilities, it lets you create partial mocks to make assertions on, as well as entire fake catalogs pre-populated with a static set of entities. Check it out! + +### Scaffolder Fixes + +Added support for `liveOmit` and `omitExtraData` options to the form which will allow for trimming superfluous data from the resulting data collected from the user. We will be testing this one for this release and promote this as the default if all goes to plan for the next mainline release. Thanks [@jboeijenga](https://github.com/jboeijenga)! + +[@stepghenglass](https://github.com/stephenglass) has been on a roll, and contributed a bunch of fixes for the Scaffolder and the `SecretField`. It now supports being `disabled`, `required` and `maxLength` and `minLength` being set from the schema. They’ve also contributed some fixes for the `ReviewState` component, to correctly parse the `ui:backstage` options for nested fields in the parameters schema. Thanks to [@richcooper95](https://github.com/richcooper95) for some other improvements to that component too and making it look much better when you have nested properties in the summary 💅. + +## Security Fixes + +- Fix in the Catalog backend where a vulnerability could be exploited to disrupt the backend instance availability. +- A fix for a vulnerability in the TechDocs backend that could allow unauthorized access to TechDocs content when hosting the content externally. +- A fix for a vulnerability in the TechDocs backend that could allow authenticated users to bypass script injection protections. + +## Upgrade path + +We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for [keeping Backstage updated](https://backstage.io/docs/getting-started/keeping-backstage-updated). + +## Links and References + +Below you can find a list of links and references to help you learn about and start using this new release. + +- [Backstage official website](https://backstage.io/), [documentation](https://backstage.io/docs/), and [getting started guide](https://backstage.io/docs/getting-started/) +- [GitHub repository](https://github.com/backstage/backstage) +- Backstage's [versioning and support policy](https://backstage.io/docs/overview/versioning-policy) +- [Community Discord](https://discord.gg/backstage-687207715902193673) for discussions and support +- [Changelog](https://github.com/backstage/backstage/tree/master/docs/releases/v1.31.0-changelog.md) +- Backstage [Demos](https://backstage.io/demos), [Blog](https://backstage.io/blog), [Roadmap](https://backstage.io/docs/overview/roadmap) and [Plugins](https://backstage.io/plugins) + +Sign up for our [newsletter](https://info.backstage.spotify.com/newsletter_subscribe) if you want to be informed about what is happening in the world of Backstage. diff --git a/docs/releases/v1.32.0-changelog.md b/docs/releases/v1.32.0-changelog.md new file mode 100644 index 0000000000..8ee89280f2 --- /dev/null +++ b/docs/releases/v1.32.0-changelog.md @@ -0,0 +1,2740 @@ +# Release v1.32.0 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.32.0](https://backstage.github.io/upgrade-helper/?to=1.32.0) + +## @backstage/backend-openapi-utils@0.2.0 + +### Minor Changes + +- 66af016: Improved support for OpenAPI validation during Jest tests. Now, OpenAPI validation can happen as you are writing your Jest tests - you no longer have to run `repo schema openapi test`. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.1 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/cli@0.28.0 + +### Minor Changes + +- 264058c: The `repo test` command will no longer default to watch mode if the `--since` flag is provided. +- 55b8b84: **BREAKING**: The Jest configuration defined at `@backstage/cli/config/jest` no longer collects configuration defined in the `"jest"` field from all parent `package.json` files. Instead, it will only read and merge configuration from the `package.json` in the monorepo root if it exists, as well as the target package. In addition, configuration defined in the root `package.json` will now only be merged into each package configuration if it is a valid project-level configuration key. +- 6129076: **BREAKING**: Removed the following deprecated commands: + + - `create`: Use `backstage-cli new` instead + - `create-plugin`: Use `backstage-cli new` instead + - `plugin:diff`: Use `backstage-cli fix` instead + - `test`: Use `backstage-cli repo test` or `backstage-cli package test` instead + - `versions:check`: Use `yarn dedupe` or `yarn-deduplicate` instead + - `clean`: Use `backstage-cli package clean` instead + + In addition, the experimental `install` and `onboard` commands have been removed since they have not received any updates since their introduction and we're expecting usage to be low. If you where relying on these commands, please let us know by opening an issue towards the main Backstage repository. + +### Patch Changes + +- ea16633: Preserve directory structure for CommonJS build output, just like ESM. This makes the build output more stable and easier to browse, and allows for more effective tree shaking and lazy imports. + +- 520a383: Added functionality to the prepack script that will append the default export type for entry points to the `exports` object before publishing. This is to help with identifying the declarative integration points for plugins without needing to fetch or run the plugins first. + +- 9625a97: The `scaffolder-module` template has been updated to use a more modern layout and new testing utilities for scaffolder actions. + +- 03810d2: Remove unknown dependency `diff` + +- cebee4f: Added support for a new experimental `EXPERIMENTAL_TRIM_NEXT_ENTRY` flag which removes any `./next` entry points present in packages when building and publishing. + +- 54c8aa3: The check for `react-dom/client` will now properly always run from the target directory. + +- b676cc9: feat: experimentally support using rspack instead under `EXPERIMENTAL_RSPACK` env flag + +- 094eaa3: Remove references to in-repo backend-common + +- 95999c5: The backend plugin template for the `new` command has been updated to provide more guidance and use a more modern structure. + +- 7955f9b: Tweaked the new package feature detection to not be active when building backend packages. + +- 4bfc2ce: Updated the Vite implementation behind the `EXPERIMENTAL_VITE` flag to work with more recent versions of Backstage. + +- 720a2f9: Updated dependency `git-url-parse` to `^15.0.0`. + +- 8f0898b: Updated dependency `esbuild` to `^0.24.0`. + +- 2c5ecf5: Support `--max-warnings` flag for package linting + +- 88407c3: Running `repo lint` with the `--successCache` flag now respects `.gitinore`, and it ignores projects without a `lint` script. + +- 8fe740d: Added a new `--successCache` option to the `backstage-cli repo test` and `backstage-cli repo lint` commands. The cache keeps track of successful runs and avoids re-running for individual packages if they haven't changed. This option is intended only to be used in CI. + + In addition a `--successCacheDir ` option has also been added to be able to override the default cache directory. + +- 55b8b84: The Jest configuration will now search for a `src/setupTests.*` file with any valid script extension, not only `.ts`. + +- 79ba5a8: The `LEGACY_BACKEND_START` flag is now deprecated. + +- f0514c7: Disabled parsing of input source maps in the SWC transform for Jest. + +- Updated dependencies + - @backstage/cli-node@0.2.9 + - @backstage/eslint-plugin@0.1.10 + - @backstage/integration@1.15.1 + - @backstage/catalog-model@1.7.0 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/config-loader@1.9.1 + - @backstage/errors@1.2.4 + - @backstage/release-manifests@0.0.11 + - @backstage/types@1.1.1 + +## @backstage/core-plugin-api@1.10.0 + +### Minor Changes + +- bfd4bec: **BREAKING PRODUCERS**: The `IconComponent` no longer accepts `fontSize="default"`. This has effectively been removed from Material-UI since its last two major versions, and has not worked properly for them in a long time. + + This change should not have an effect on neither users of MUI4 nor MUI5/6, since the updated interface should still let you send the respective `SvgIcon` types into interfaces where relevant (e.g. as app icons). + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- 39001f4: Fixing issue with types for `ParamKeys` leading to type mismatches across versions +- Updated dependencies + - @backstage/version-bridge@1.0.10 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/frontend-app-api@0.10.0 + +### Minor Changes + +- 4a5ba19: Removed deprecated `createApp` and `CreateAppFeatureLoader` from `@backstage/frontend-app-api`, use the same `createApp` and `CreateAppFeatureLoader` import from `@backstage/frontend-defaults` instead. + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/core-plugin-api@1.10.0 + - @backstage/version-bridge@1.0.10 + - @backstage/core-app-api@1.15.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/frontend-defaults@0.1.1 + - @backstage/types@1.1.1 + +## @backstage/frontend-plugin-api@0.9.0 + +### Minor Changes + +- 4a5ba19: Removed deprecated `namespace` option from `createExtension` and `createExtensionBlueprint`, including `.make` and `.makeWithOverides`, it's no longer necessary and will use the `pluginId` instead. + + Removed deprecated `createExtensionOverrides` this should be replaced with `createFrontendModule` instead. + + Removed deprecated `BackstagePlugin` type, use `FrontendPlugin` type instead from this same package. + +- bfd4bec: **BREAKING PRODUCERS**: The `IconComponent` no longer accepts `fontSize="default"`. This has effectively been removed from Material-UI since its last two major versions, and has not worked properly for them in a long time. + + This change should not have an effect on neither users of MUI4 nor MUI5/6, since the updated interface should still let you send the respective `SvgIcon` types into interfaces where relevant (e.g. as app icons). + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. + +- 873e424: Internal refactor of usage of opaque types. + +- 323aae8: It is now possible to override the blueprint parameters when overriding an extension created from a blueprint: + + ```ts + const myExtension = MyBlueprint.make({ + params: { + myParam: 'myDefault', + }, + }); + + const myOverride = myExtension.override({ + params: { + myParam: 'myOverride', + }, + }); + const myFactoryOverride = myExtension.override({ + factory(origFactory) { + return origFactory({ + params: { + myParam: 'myOverride', + }, + }); + }, + }); + ``` + + The provided parameters will be merged with the original parameters of the extension. + +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/core-plugin-api@1.10.0 + - @backstage/version-bridge@1.0.10 + - @backstage/types@1.1.1 + +## @backstage/integration-react@1.2.0 + +### Minor Changes + +- a11495a: Added new ScmAuth method `forBitbucketServer` that uses correct OAuth scopes by default. Also updated `forBitbucket` method to allow overriding the default OAuth scopes. + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- 3dbac17: Revert of change #26430 +- Updated dependencies + - @backstage/core-plugin-api@1.10.0 + - @backstage/integration@1.15.1 + - @backstage/config@1.2.0 + +## @backstage/repo-tools@0.10.0 + +### Minor Changes + +- 30c2be9: Update @microsoft/api-extractor and use their api report resolution. + Change api report format from `api-report.md` to `report.api.md` +- 8eb3033: Adds a new command `backstage-repo-tools peer-deps` for validating your usage of peer dependencies in your plugins. It currently supports react related peer dependencies. It also has a `--fix` mode for quickly fixing any issues that it finds. + +### Patch Changes + +- 1f6706f: Properly log instructions when APIs do not match + +- 35e735b: Fix issues with warnings in API reports not being checked or reported. + + Due to the recent version bump of API Extractor you may now see a lot of `ae-undocumented` warnings, + these can be ignored using the `-o` option, for example, `backstage-repo-tools api-reports -o ae-undocumented,ae-wrong-input-file-type`. + +- 248793e: Updated dependency `@useoptic/optic` to `^1.0.0`. + +- Updated dependencies + - @backstage/cli-node@0.2.9 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/cli-common@0.1.14 + - @backstage/config-loader@1.9.1 + - @backstage/errors@1.2.4 + +## @backstage/test-utils@1.7.0 + +### Minor Changes + +- 9cc7dd6: Added a `mockApis` export, which will replace the `MockX` API implementation classes and their related types. This is analogous with the backend's `mockServices`. + + **DEPRECATED** several old helpers: + + - Deprecated `MockAnalyticsApi`, please use `mockApis.analytics` instead. + - Deprecated `MockConfigApi`, please use `mockApis.config` instead. + - Deprecated `MockPermissionApi`, please use `mockApis.permission` instead. + - Deprecated `MockStorageApi`, please use `mockApis.storage` instead. + - Deprecated `MockTranslationApi`, please use `mockApis.translation` instead. + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- Updated dependencies + - @backstage/core-plugin-api@1.10.0 + - @backstage/plugin-permission-react@0.4.27 + - @backstage/core-app-api@1.15.1 + - @backstage/theme@0.6.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/theme@0.6.0 + +### Minor Changes + +- e77ff3d: Adds support for custom background colors in code blocks and inline code within TechDocs. + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.4.0 + +### Minor Changes + +- d0edfec: **BREAKING**: The `profileEmailMatchingUserEntityEmail` sign-in resolver has been removed as it was using an insecure fallback for resolving user identities. See for how to create a custom sign-in resolver if needed as a replacement. + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + +## @backstage/plugin-catalog@1.24.0 + +### Minor Changes + +- 71f9f0c: Updated default columns for location entities to remove description and tags from the catalog table view. +- cec8e8c: Adding negation keyword for entity filtering + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- 46b5a20: Empty states updated with external link icon for learn more links +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/integration-react@1.2.0 + - @backstage/core-compat-api@0.3.1 + - @backstage/core-plugin-api@1.10.0 + - @backstage/plugin-permission-react@0.4.27 + - @backstage/plugin-catalog-react@1.14.0 + - @backstage/plugin-search-react@1.8.1 + - @backstage/catalog-client@1.7.1 + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-scaffolder-common@1.5.6 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-catalog-backend@1.27.0 + +### Minor Changes + +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- 83a8830: Added migration `20241003170511_alter_target_in_locations.js` to change the target column in the `locations` table to TEXT type. + Added a hash for the key column in the `refresh_keys` table. +- 62747f8: Fixed a bug where the concurrency limiter for URL reading was not honored +- c1f9764: Add configuration parameters for deferred stitcher +- 720a2f9: Updated dependency `git-url-parse` to `^15.0.0`. +- d1cf90a: Adds the ability to disable catalog processing `catalog.processingInterval: false` in `app-config` +- f1cab41: Update catalog search table in transaction +- 8206f49: Fix a bug where etags were expiring too soon in the URL reader +- Updated dependencies + - @backstage/plugin-search-backend-module-catalog@0.2.3 + - @backstage/plugin-permission-node@0.8.4 + - @backstage/plugin-events-node@0.4.1 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/backend-openapi-utils@0.2.0 + - @backstage/catalog-client@1.7.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.4.0 + +### Minor Changes + +- 6343c8d: Fixes the event-based updates at `BitbucketCloudEntityProvider`. + + Previously, this entity provider had optional event support for legacy backends + that could be enabled by passing `catalogApi`, `events`, and `tokenManager`. + + For the new/current backend system, the `catalogModuleBitbucketCloudEntityProvider` + (`catalog.bitbucket-cloud-entity-provider`), event support was enabled by default. + + A recent change removed `tokenManager` as a dependency from the module as well as removed it as input. + While this didn't break the instantiation of the module, it broke the event-based updates, + and led to a runtime misbehavior, accompanied by an info log message. + + This change will replace the use of `tokenManager` with the use of `auth` (`AuthService`). + + Additionally, to simplify, it will make `catalogApi` and `events` required dependencies. + For the current backend system, this change is transparent and doesn't require any action. + For the legacy backend system, this change will require you to pass those dependencies + if you didn't do it already. + + BREAKING CHANGES: + + _(For legacy backend users only.)_ + + Previously optional `catalogApi`, and `events` are required now. + A new required dependency `auth` was added. + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- Updated dependencies + - @backstage/plugin-events-node@0.4.1 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/catalog-client@1.7.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.24 + - @backstage/plugin-catalog-common@1.1.0 + +## @backstage/plugin-catalog-react@1.14.0 + +### Minor Changes + +- 0801db6: Add catalog service mocks under the `/testUtils` subpath export. + + You can now use e.g. `const catalog = catalogApiMock.mock()` in your test and then do assertions on `catalog.getEntities` without awkward type casting. + +- 6812980: Added a new prop, `disableTooltip` to the `EntityRefLink` component + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/frontend-test-utils@0.2.1 + - @backstage/integration-react@1.2.0 + - @backstage/core-compat-api@0.3.1 + - @backstage/core-plugin-api@1.10.0 + - @backstage/plugin-permission-react@0.4.27 + - @backstage/version-bridge@1.0.10 + - @backstage/catalog-client@1.7.1 + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-home@0.8.0 + +### Minor Changes + +- 9893bb5: **BREAKING** Implement usage of unused `limit` query parameter in visits API `.list()` function + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- e698470: Updated dependency `@rjsf/utils` to `5.21.2`. + Updated dependency `@rjsf/core` to `5.21.2`. + Updated dependency `@rjsf/material-ui` to `5.21.2`. + Updated dependency `@rjsf/validator-ajv8` to `5.21.2`. +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/core-compat-api@0.3.1 + - @backstage/core-plugin-api@1.10.0 + - @backstage/core-app-api@1.15.1 + - @backstage/plugin-catalog-react@1.14.0 + - @backstage/plugin-home-react@0.1.18 + - @backstage/theme@0.6.0 + - @backstage/catalog-client@1.7.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + +## @backstage/plugin-scaffolder@1.26.0 + +### Minor Changes + +- bf6eaf3: Added support for `FormFieldBlueprint` to create field extensions in the Scaffolder plugin +- c433ae9: Improved the layout of the manage templates page (`/edit`) by adding icons and descriptions that better describe what each page is for. Updated the header menu to link back to the scaffolder create page. +- 7bfaf23: Text field content of the `EntityPicker` is now more readable as it uses entity title instead of entity reference. +- cc3f80c: Added ability to create a new local scaffolder template to ease onboarding when creating new templates. +- 5492eb6: Added ability to link to a specific action on the actions page + +### Patch Changes + +- b2b2aa8: Fix extra divider displayed in owner list picker on list tasks page +- 7f1f483: Create a separate route for the Scaffolder template editor and add the ability to refresh the page without closing the directory. Also, when the directory is closed, the user will stay on the editor page and can load a template folder from there. +- f6c15d8: Apply `defaultValue` props in `MultiEntityPicker` +- 7a3d622: Create a separate route for the template form editor so we refresh it without being redirected to scaffolder edit page. +- 4698646: Change task list created at column to show timestamp +- e969dc7: Move `@types/react` to a peer dependency. +- e6bbfce: Add tests for the `TemplateEditorToolbarTemplatesMenu` component. +- 4130291: Create a separate route for the custom fields explorer so we refresh it without being redirected to scaffolder edit page. +- 4e9702e: Add tests for the new pages header navigation. +- f25c9e3: Fix behavior of scaffolder entity pickers (EntityPicker, MultiEntityPicker, MyGroupsPicker) to not auto-fill and disable the field if there is only a single value option and the field is not required. +- 785d68f: Add support for pagination in scaffolder tasks list +- 94a7bcd: Change "Register Existing Component" CTA to outlined as it's not a primary action on the scaffolder pages +- f989c47: Add translation to the editor toolbar component. +- d4cafc8: Standardize template editor pages desktop and mobile layouts. +- b1de959: Scaffolder task routes require read permission to access. The tasks list option in the scaffolder page context menu only shows with permission. +- e698470: Updated dependency `@rjsf/utils` to `5.21.2`. + Updated dependency `@rjsf/core` to `5.21.2`. + Updated dependency `@rjsf/material-ui` to `5.21.2`. + Updated dependency `@rjsf/validator-ajv8` to `5.21.2`. +- 720a2f9: Updated dependency `git-url-parse` to `^15.0.0`. +- 01ffa58: Add tests for the `useTemplateDirectory` hook. +- 3ac4766: Add an actions filter on the list actions page and drawer. +- 11e0752: Make it possible to manually retry the scaffolder template from the step it failed +- 09fcd95: Update the Scaffolder template editor to quickly access installed custom fields and actions when editing a template. +- c18d925: Add tests for the `TemplateEditorToolbarFilesMenu` component. +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/plugin-scaffolder-react@1.13.0 + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/integration-react@1.2.0 + - @backstage/core-compat-api@0.3.1 + - @backstage/core-plugin-api@1.10.0 + - @backstage/plugin-permission-react@0.4.27 + - @backstage/plugin-catalog-react@1.14.0 + - @backstage/integration@1.15.1 + - @backstage/catalog-client@1.7.1 + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-scaffolder-common@1.5.6 + +## @backstage/plugin-scaffolder-backend@1.26.0 + +### Minor Changes + +- 3ec4e6d: Added pagination support for listing of tasks and the ability to filter on several users and task statuses. +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. + +### Patch Changes + +- 734c2d4: Add `fetch:template:file` scaffolder action to download a single file and template the contents. Example usage: + + ```yaml + - id: fetch-file + name: Fetch File + action: fetch:template:file + input: + url: https://github.com/backstage/software-templates/blob/main/scaffolder-templates/create-react-app/skeleton/catalog-info.yaml + targetPath: './target/catalog-info.yaml' + values: + component_id: My Component + owner: Test + ``` + +- f1f0076: handle step.if: false + +- 2f90932: Include step name and step id to checkpoint key + +- 094eaa3: Remove references to in-repo backend-common + +- 8f0898b: Updated dependency `esbuild` to `^0.24.0`. + +- 11e0752: Make it possible to manually retry the scaffolder template from the step it failed + +- Updated dependencies + - @backstage/backend-defaults@0.5.1 + - @backstage/plugin-scaffolder-backend-module-github@0.5.1 + - @backstage/plugin-scaffolder-node@0.5.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.6.0 + - @backstage/plugin-auth-node@0.5.3 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.1 + - @backstage/plugin-permission-node@0.8.4 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/plugin-scaffolder-backend-module-azure@0.2.1 + - @backstage/catalog-client@1.7.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.24 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.1 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.1 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.2.1 + - @backstage/plugin-scaffolder-backend-module-gitea@0.2.1 + - @backstage/plugin-scaffolder-common@1.5.6 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.6.0 + +### Minor Changes + +- 73f2ccf: declare correct type (number) for publish:gitlab output.projectId + +### Patch Changes + +- 9adfe46: GitLab MR: introduce 'skip' commit action. +- bc71718: Updated installation instructions in README to not include `/alpha`. +- 094eaa3: Remove references to in-repo backend-common +- f2f68cf: Updated `gitlab:group:ensureExists` action to instead use oauth client. +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.5.0 + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-scaffolder-node@0.5.0 + +### Minor Changes + +- 3ec4e6d: Added pagination support for listing of tasks and the ability to filter on several users and task statuses. + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- 11e0752: Make it possible to manually retry the scaffolder template from the step it failed +- d7a736c: Use `branch` function instead of `checkout` function when creating branch +- Updated dependencies + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.6 + +## @backstage/plugin-scaffolder-react@1.13.0 + +### Minor Changes + +- bf6eaf3: Added support for `FormFieldBlueprint` to create field extensions in the Scaffolder plugin +- d851b5b: Renamed Template Editor to Manage Templates. + +### Patch Changes + +- 341e5db: Add `overridableComponent` `BackstageTemplateStepperClassKey` to template stepper to enable custom styling +- 4b60e0c: Small tweaks to API reports to make them valid +- e969dc7: Move `@types/react` to a peer dependency. +- 785d68f: Add support for pagination in scaffolder tasks list +- b1de959: Scaffolder task routes require read permission to access. The tasks list option in the scaffolder page context menu only shows with permission. +- e698470: Updated dependency `@rjsf/utils` to `5.21.2`. + Updated dependency `@rjsf/core` to `5.21.2`. + Updated dependency `@rjsf/material-ui` to `5.21.2`. + Updated dependency `@rjsf/validator-ajv8` to `5.21.2`. +- 11e0752: Make it possible to manually retry the scaffolder template from the step it failed +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/core-plugin-api@1.10.0 + - @backstage/plugin-permission-react@0.4.27 + - @backstage/version-bridge@1.0.10 + - @backstage/plugin-catalog-react@1.14.0 + - @backstage/theme@0.6.0 + - @backstage/catalog-client@1.7.1 + - @backstage/catalog-model@1.7.0 + - @backstage/types@1.1.1 + - @backstage/plugin-scaffolder-common@1.5.6 + +## @backstage/plugin-search-backend@1.6.0 + +### Minor Changes + +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. + +### Patch Changes + +- 66af016: Fix to schema to allow arbitrary query parameters. +- 094eaa3: Remove references to in-repo backend-common +- Updated dependencies + - @backstage/backend-defaults@0.5.1 + - @backstage/plugin-search-backend-node@1.3.3 + - @backstage/plugin-permission-node@0.8.4 + - @backstage/backend-openapi-utils@0.2.0 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-elasticsearch@1.6.0 + +### Minor Changes + +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. + +### Patch Changes + +- d78b07c: Align the configuration schema with the docs and actual behavior of the code +- 4b60e0c: Remove extension points from `/alpha` export, they're available from the main package already +- 094eaa3: Remove references to in-repo backend-common +- Updated dependencies + - @backstage/plugin-search-backend-node@1.3.3 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + - @backstage/integration-aws-node@0.1.12 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-search-backend-module-techdocs@0.3.0 + +### Minor Changes + +- 07a7fc2: Refactor TechDocs collator, enable clients to override the mkdocs search index transformer, so that per document properties (like tags) can be added to Backstage search index. + +### Patch Changes + +- 4b60e0c: Remove extension points from `/alpha` export, they're available from the main package already +- 094eaa3: Remove references to in-repo backend-common +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- 2f88f88: Updated backend installation instructions. +- Updated dependencies + - @backstage/plugin-search-backend-node@1.3.3 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/plugin-techdocs-node@1.12.12 + - @backstage/catalog-client@1.7.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/plugin-techdocs@1.11.0 + +### Minor Changes + +- e77ff3d: Adds support for custom background colors in code blocks and inline code within TechDocs. + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- a77cb40: Make `emptyState` input optional on `entity-content:techdocs` extension so that + the default empty state extension works correctly. +- e918061: Add support for mkdocs material palette conditional hashes. +- 720a2f9: Updated dependency `git-url-parse` to `^15.0.0`. +- e8b4966: Use more of the available space for the navigation sidebar. +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/integration-react@1.2.0 + - @backstage/core-compat-api@0.3.1 + - @backstage/core-plugin-api@1.10.0 + - @backstage/plugin-techdocs-react@1.2.9 + - @backstage/plugin-catalog-react@1.14.0 + - @backstage/plugin-search-react@1.8.1 + - @backstage/plugin-auth-react@0.1.7 + - @backstage/theme@0.6.0 + - @backstage/integration@1.15.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-search-common@1.2.14 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-backend@1.11.0 + +### Minor Changes + +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- fbdc631: Allow to pass StorageOptions to GCS Publisher +- Updated dependencies + - @backstage/plugin-search-backend-module-techdocs@0.3.0 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/plugin-techdocs-node@1.12.12 + - @backstage/integration@1.15.1 + - @backstage/catalog-client@1.7.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/app-defaults@1.5.12 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- 46b5a20: Added `externalLink` to icon defaults +- 8c40e55: Updated the `bitbucket-server-auth` default API to set its environment based on the `auth.environment` config option instead of being hardcoded to `development`. +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/core-plugin-api@1.10.0 + - @backstage/plugin-permission-react@0.4.27 + - @backstage/core-app-api@1.15.1 + - @backstage/theme@0.6.0 + +## @backstage/backend-app-api@1.0.1 + +### Patch Changes + +- ffd1f4a: Plugin lifecycle shutdown hooks are now performed before root lifecycle shutdown hooks. + +- fd6e6f4: build(deps): bump `cookie` from 0.6.0 to 0.7.0 + +- 094eaa3: Remove references to in-repo backend-common + +- 04af116: The backend will no longer exit immediately if any plugin or modules fails to initialize. Instead, the backend will wait for all plugins and modules to either start up successfully or throw, and then shut down the backend if there were any initialization errors. + + This fixes an issue where backend initialization errors in adjacent plugins during database schema migration could cause the database migrations to be stuck in a locked state. + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/plugin-permission-node@0.8.4 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/config-loader@1.9.1 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/backend-defaults@0.5.1 + +### Patch Changes + +- 4b60e0c: Small tweaks to API reports to make them valid + +- 321a994: Sensitive internal fields on `BackstageCredentials` objects are now defined as read-only properties in order to minimize risk of leakage. + +- ffd1f4a: Plugin lifecycle shutdown hooks are now performed before root lifecycle shutdown hooks. + +- ffd1f4a: The database manager now attempts to close any database connections in a root lifecycle shutdown hook. + +- e36d12f: The task scheduler now attempts to abort any tasks if it detects that Backstage is being shut down. + +- fd6e6f4: build(deps): bump `cookie` from 0.6.0 to 0.7.0 + +- 094eaa3: Remove references to in-repo backend-common + +- 720a2f9: Updated dependency `git-url-parse` to `^15.0.0`. + +- 920004b: Updating error message for getProjectId when fetching Gitlab project from its url to be more accurate + +- d7b44f0: Fix for backend shutdown hanging during local development due to SQLite connection shutdown never resolving. + +- 8fd7deb: The default root HTTP service implementation will now pretty-print JSON responses in development. + + If you are overriding the `rootHttpRouterServiceFactory` with a `configure` function that doesn't call `applyDefaults`, you can introduce this functionality by adding the following snippet inside `configure`: + + ```ts + if (process.env.NODE_ENV === 'development') { + app.set('json spaces', 2); + } + ``` + +- Updated dependencies + - @backstage/cli-node@0.2.9 + - @backstage/backend-app-api@1.0.1 + - @backstage/plugin-auth-node@0.5.3 + - @backstage/plugin-permission-node@0.8.4 + - @backstage/plugin-events-node@0.4.1 + - @backstage/integration@1.15.1 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/config-loader@1.9.1 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/types@1.1.1 + +## @backstage/backend-dynamic-feature-service@0.4.2 + +### Patch Changes + +- d18d494: Enhance and simplify the activation of the dynamic plugins feature: + + - The dynamic plugins service (which implements the `DynamicPluginsProvider`) is restored, since it is required for plugins to depend on it in order to get the details of loaded dynamic plugins (possibly with loading errors to be surfaced in some UI). + - A new all-in-one feature loader (`dynamicPluginsFeatureLoader`) is provided that allows a 1-liner activation of both the dynamic features and additional services or plugins required to have the dynamic plugins work correctly with dynamic plugins config schemas. Previous service factories or feature loaders are deprecated. + +- e6c0550: Enhance the API of the `DynamicPluginProvider` (available as a service) to: + + - expose the new `getScannedPackage()` method that returns the `ScannedPluginPackage` from which a given plugin has been loaded, + - add an optional `includeFailed` argument in the plugins list retrieval methods, to include the plugins that could be successfully loaded (`false` by default). + +- 4c89e47: Allow passing an async module loader in the `DynamicPluginsFeatureLoaderOptions`. + +- 094eaa3: Remove references to in-repo backend-common + +- 2f88f88: Updated backend installation instructions. + +- Updated dependencies + - @backstage/backend-defaults@0.5.1 + - @backstage/cli-node@0.2.9 + - @backstage/backend-app-api@1.0.1 + - @backstage/plugin-scaffolder-node@0.5.0 + - @backstage/plugin-auth-node@0.5.3 + - @backstage/plugin-search-backend-node@1.3.3 + - @backstage/plugin-catalog-backend@1.27.0 + - @backstage/plugin-permission-node@0.8.4 + - @backstage/plugin-events-backend@0.3.13 + - @backstage/plugin-events-node@0.4.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/config-loader@1.9.1 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.26 + - @backstage/plugin-permission-common@0.8.1 + - @backstage/plugin-search-common@1.2.14 + +## @backstage/backend-plugin-api@1.0.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/backend-test-utils@1.0.1 + +### Patch Changes + +- fd6e6f4: build(deps): bump `cookie` from 0.6.0 to 0.7.0 +- a19ce00: The `createMockDirectory` cleanup strategy has been changed, no longer requiring it to be called outside individual tests. +- 9cc7dd6: Minor doc string changes +- Updated dependencies + - @backstage/backend-defaults@0.5.1 + - @backstage/backend-app-api@1.0.1 + - @backstage/plugin-auth-node@0.5.3 + - @backstage/plugin-events-node@0.4.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/catalog-client@1.7.1 + +### Patch Changes + +- 0040632: Add missing doc string to API +- Updated dependencies + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + +## @backstage/cli-node@0.2.9 + +### Patch Changes + +- fec7278: Added new `lockfile.getDependencyTreeHash(name)` utility. +- Updated dependencies + - @backstage/cli-common@0.1.14 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/codemods@0.1.51 + +### Patch Changes + +- c06b7f1: Updated dependency `@types/jscodeshift` to `^0.12.0`. +- Updated dependencies + - @backstage/cli-common@0.1.14 + +## @backstage/core-app-api@1.15.1 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- Updated dependencies + - @backstage/core-plugin-api@1.10.0 + - @backstage/version-bridge@1.0.10 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/core-compat-api@0.3.1 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- 4a5ba19: Internal update to remove deprecated `BackstagePlugin` type and move to `FrontendPlugin` +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/core-plugin-api@1.10.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/core-components@0.15.1 + +### Patch Changes + +- 3f76d0e: Correct size of FavoriteToggle and inherit non-starred color from parent +- e969dc7: Move `@types/react` to a peer dependency. +- 1ff1dbd: It is possible to define a custom error element to be shown when sign in fails +- 83e2887: Fixed a bug in the `SidebarSubmenu` core component that caused the nested menu to overlap with the sidebar when the user hovers over the pinned sidebar. +- 46b5a20: `Link` component now accepts `externalLinkIcon` prop +- e4ad29a: Fix authentication error handling using redirect flow via `enableExperimentalRedirectFlow` config. If an error is caught during authentication, the user is redirected back to app origin with `error` query parameter containing the error message. +- Updated dependencies + - @backstage/core-plugin-api@1.10.0 + - @backstage/version-bridge@1.0.10 + - @backstage/theme@0.6.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/create-app@0.5.21 + +### Patch Changes + +- c42c710: Bumped create-app version. +- 56a8118: Bumped create-app version. +- a7674d6: Fixed lack of `.yarnrc.yml` in the template. +- ab89e45: Remove some dependencies that aren't required anymore +- b452088: Tweak `Dockerfile` to fix deprecated syntax. +- Updated dependencies + - @backstage/cli-common@0.1.14 + +## @backstage/dev-utils@1.1.2 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/integration-react@1.2.0 + - @backstage/core-plugin-api@1.10.0 + - @backstage/app-defaults@1.5.12 + - @backstage/core-app-api@1.15.1 + - @backstage/plugin-catalog-react@1.14.0 + - @backstage/theme@0.6.0 + - @backstage/catalog-model@1.7.0 + +## @backstage/eslint-plugin@0.1.10 + +### Patch Changes + +- b1c2a2d: Exclude `@material-ui/data-grid` +- 63963f6: Internal refactor to deal with `estree` upgrade + +## @backstage/frontend-defaults@0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/frontend-app-api@0.10.0 + - @backstage/plugin-app@0.1.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/frontend-test-utils@0.2.1 + +### Patch Changes + +- 666d5b1: Disable the built-in `SignInPage` in `createExtensionTester` in order to not mess with existing tests + +- e969dc7: Move `@types/react` to a peer dependency. + +- 873e424: Internal refactor of usage of opaque types. + +- 0801db6: Added an `ApiMock`, analogous to `ServiceMock` from the backend test utils. + +- 9cc7dd6: Added a `mockApis` export, which will replace the `MockX` API implementation classes and their related types. This is analogous with the backend's `mockServices`. + + **DEPRECATED** several old helpers: + + - Deprecated `MockAnalyticsApi`, please use `mockApis.analytics` instead. + - Deprecated `MockConfigApi`, please use `mockApis.config` instead. + - Deprecated `MockPermissionApi`, please use `mockApis.permission` instead. + - Deprecated `MockStorageApi`, please use `mockApis.storage` instead. + - Deprecated `MockTranslationApi`, please use `mockApis.translation` instead. + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/frontend-app-api@0.10.0 + - @backstage/version-bridge@1.0.10 + - @backstage/test-utils@1.7.0 + - @backstage/plugin-app@0.1.1 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + +## @backstage/integration@1.15.1 + +### Patch Changes + +- 720a2f9: Updated dependency `git-url-parse` to `^15.0.0`. +- 920004b: Updating error message for getProjectId when fetching Gitlab project from its url to be more accurate +- 090e49a: Updated functions parseHarnessUrl, getHarnessLatestCommitUrl, getHarnessFileContentsUrl and getHarnessArchiveUrl to fix parsing of urls +- Updated dependencies + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @techdocs/cli@1.8.20 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.1 + - @backstage/plugin-techdocs-node@1.12.12 + - @backstage/catalog-model@1.7.0 + - @backstage/cli-common@0.1.14 + - @backstage/config@1.2.0 + +## @backstage/version-bridge@1.0.10 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. + +## @backstage/plugin-api-docs@0.11.11 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- 46b5a20: Empty states updated with external link icon for learn more links +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/plugin-catalog@1.24.0 + - @backstage/core-compat-api@0.3.1 + - @backstage/core-plugin-api@1.10.0 + - @backstage/plugin-permission-react@0.4.27 + - @backstage/plugin-catalog-react@1.14.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + +## @backstage/plugin-api-docs-module-protoc-gen-doc@0.1.8 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. + +## @backstage/plugin-app@0.1.1 + +### Patch Changes + +- b36be7a: Added missing default `SignInPageExtension` which by default uses guest auth, missing `ApiExtensions` for `scmAuth` +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/integration-react@1.2.0 + - @backstage/core-plugin-api@1.10.0 + - @backstage/plugin-permission-react@0.4.27 + - @backstage/theme@0.6.0 + +## @backstage/plugin-app-backend@0.3.76 + +### Patch Changes + +- 2c4ee26: Fixed unexpected behaviour where configuration supplied with `APP_CONFIG_*` environment variables where not filtered by the configuration schema. +- 094eaa3: Remove references to in-repo backend-common +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + - @backstage/config-loader@1.9.1 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.26 + +## @backstage/plugin-app-node@0.1.26 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config-loader@1.9.1 + +## @backstage/plugin-app-visualizer@0.1.11 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/frontend-plugin-api@0.9.0 + - @backstage/core-plugin-api@1.10.0 + +## @backstage/plugin-auth-backend@0.23.1 + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- Updated dependencies + - @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.1 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.3.1 + - @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.1 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.2.1 + - @backstage/plugin-auth-backend-module-onelogin-provider@0.2.1 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.2.1 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.1 + - @backstage/plugin-auth-backend-module-github-provider@0.2.1 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.2.1 + - @backstage/plugin-auth-backend-module-google-provider@0.2.1 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.3.1 + - @backstage/plugin-auth-backend-module-oidc-provider@0.3.1 + - @backstage/plugin-auth-backend-module-okta-provider@0.1.1 + - @backstage/plugin-auth-node@0.5.3 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/catalog-client@1.7.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-backend-module-auth0-provider@0.1.1 + - @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.1 + - @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.1 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.1 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.3.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-auth0-provider@0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.2.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- 094eaa3: Remove references to in-repo backend-common +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/plugin-auth-backend@0.23.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.2.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.2.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-google-provider@0.2.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-guest-provider@0.2.1 + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.2.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- daa02d6: Add `skipUserProfile` config flag to Microsoft authenticator +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.3.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/errors@1.2.4 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.3.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- 094eaa3: Remove references to in-repo backend-common +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/plugin-auth-backend@0.23.1 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-okta-provider@0.1.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-onelogin-provider@0.2.1 + +### Patch Changes + +- 217458a: Updated configuration schema to include the new `allowedDomains` option for the `emailLocalPartMatchingUserEntityName` sign-in resolver. +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + +## @backstage/plugin-auth-node@0.5.3 + +### Patch Changes + +- 217458a: Added a new `allowedDomains` option for the common `emailLocalPartMatchingUserEntityName` sign-in resolver. +- 094eaa3: Remove references to in-repo backend-common +- e4ad29a: Fix authentication error handling using redirect flow via `enableExperimentalRedirectFlow` config. If an error is caught during authentication, the user is redirected back to app origin with `error` query parameter containing the error message. +- Updated dependencies + - @backstage/catalog-client@1.7.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-auth-react@0.1.7 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. +- Updated dependencies + - @backstage/core-components@0.15.1 + - @backstage/core-plugin-api@1.10.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-bitbucket-cloud-common@0.2.24 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.15.1 + +## @backstage/plugin-catalog-backend-module-aws@0.4.3 + +### Patch Changes + +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- Updated dependencies + - @backstage/backend-defaults@0.5.1 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/integration-aws-node@0.1.12 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-kubernetes-common@0.8.3 + +## @backstage/plugin-catalog-backend-module-azure@0.2.3 + +### Patch Changes + +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- Updated dependencies + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.1.0 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/backend-openapi-utils@0.2.0 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.2.3 + +### Patch Changes + +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- Updated dependencies + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-catalog-backend-module-gcp@0.3.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/plugin-kubernetes-common@0.8.3 + +## @backstage/plugin-catalog-backend-module-gerrit@0.2.3 + +### Patch Changes + +- 5b6edf1: Fixed an issue preventing the provider's `schedule` config from being applied." +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- Updated dependencies + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + +## @backstage/plugin-catalog-backend-module-github@0.7.5 + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- 720a2f9: Updated dependency `git-url-parse` to `^15.0.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.27.0 + - @backstage/plugin-events-node@0.4.1 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/catalog-client@1.7.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.1.0 + +## @backstage/plugin-catalog-backend-module-github-org@0.3.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.7.5 + - @backstage/plugin-events-node@0.4.1 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/config@1.2.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.4.3 + +### Patch Changes + +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- Updated dependencies + - @backstage/backend-defaults@0.5.1 + - @backstage/plugin-events-node@0.4.1 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.1.0 + +## @backstage/plugin-catalog-backend-module-gitlab-org@0.2.1 + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- Updated dependencies + - @backstage/plugin-events-node@0.4.1 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/plugin-catalog-backend-module-gitlab@0.4.3 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.5.5 + +### Patch Changes + +- 4b60e0c: Remove extension points from `/alpha` export, they're available from the main package already +- 094eaa3: Remove references to in-repo backend-common +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- 2107965: Turn down the logging level on most "all is well" type log messages +- Updated dependencies + - @backstage/plugin-catalog-backend@1.27.0 + - @backstage/plugin-events-node@0.4.1 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-backend-module-ldap@0.9.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.1.0 + +## @backstage/plugin-catalog-backend-module-logs@0.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.27.0 + - @backstage/plugin-events-node@0.4.1 + - @backstage/backend-plugin-api@1.0.1 + +## @backstage/plugin-catalog-backend-module-msgraph@0.6.3 + +### Patch Changes + +- 4b60e0c: Remove extension points from `/alpha` export, they're available from the main package already +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- Updated dependencies + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.1.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.2.2 + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- Updated dependencies + - @backstage/plugin-catalog-backend@1.27.0 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.1.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.2.3 + +### Patch Changes + +- 4b60e0c: Small tweaks to API reports to make them valid +- Updated dependencies + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/errors@1.2.4 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-scaffolder-common@1.5.6 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.5.1 + +### Patch Changes + +- 094eaa3: Remove references to in-repo backend-common +- Updated dependencies + - @backstage/plugin-auth-node@0.5.3 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/errors@1.2.4 + - @backstage/plugin-catalog-unprocessed-entities-common@0.0.4 + - @backstage/plugin-permission-common@0.8.1 + +## @backstage/plugin-catalog-graph@0.4.11 + +### Patch Changes + +- e969dc7: Move `@types/react` to a peer dependency. + +- 4d9f39e: Added InfoCard `action` attribute for CatalogGraphCard + + ```tsx + const action =