diff --git a/.changeset/afraid-numbers-invite.md b/.changeset/afraid-numbers-invite.md deleted file mode 100644 index ee81341d3a..0000000000 --- a/.changeset/afraid-numbers-invite.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@backstage/repo-tools': minor ---- - -Updates the OpenAPI client template to support the new format for identifying plugin ID. You should now use `info.title` like so, - -```diff -info: -+ title: yourPluginId -- title: @internal/plugin-*-backend - -servers: - - / -- - yourPluginId -``` diff --git a/.changeset/angry-phones-arrive.md b/.changeset/angry-phones-arrive.md deleted file mode 100644 index 2afcd240a9..0000000000 --- a/.changeset/angry-phones-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/repo-tools': minor ---- - -Add support for `oneOf` in client generated by `schema openapi generate-client`. diff --git a/.changeset/beige-apples-press.md b/.changeset/beige-apples-press.md deleted file mode 100644 index 56c46db830..0000000000 --- a/.changeset/beige-apples-press.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-devops': patch ---- - -Added alpha support for the New Frontend System (Declarative Integration) diff --git a/.changeset/big-yaks-film.md b/.changeset/big-yaks-film.md new file mode 100644 index 0000000000..432a876e97 --- /dev/null +++ b/.changeset/big-yaks-film.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-test-utils': patch +--- + +Added support for the new [`auth`](https://backstage.io/docs/backend-system/core-services/auth/) and [`httpAuth`](https://backstage.io/docs/backend-system/core-services/http-auth) services that were created as part of [BEP-0003](https://github.com/backstage/backstage/tree/master/beps/0003-auth-architecture-evolution). These services will be present by default in test apps, and you can access mocked versions of their features under `mockServices.auth` and `mockServices.httpAuth` if you want to inspect or replace their behaviors. + +There is also a new `mockCredentials` that you can use for acquiring mocks of the various types of credentials that are used in the new system. diff --git a/.changeset/blue-keys-do.md b/.changeset/blue-keys-do.md deleted file mode 100644 index c933bac0f2..0000000000 --- a/.changeset/blue-keys-do.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-plugin-api': minor ---- - -**BREAKING**: Replace default plugin extension and plugin ids to be `app` instead of `root`. diff --git a/.changeset/brave-jobs-invite.md b/.changeset/brave-jobs-invite.md deleted file mode 100644 index 402c5cebe7..0000000000 --- a/.changeset/brave-jobs-invite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Added a new `LegacyRootDatabaseService` interface that can be used to avoid direct dependencies on the `DatabaseManager`. diff --git a/.changeset/breezy-cobras-sin.md b/.changeset/breezy-cobras-sin.md deleted file mode 100644 index 93b296c455..0000000000 --- a/.changeset/breezy-cobras-sin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-app-api': minor ---- - -**BREAKING**: Removed the experimental `createExtensionTree` API. diff --git a/.changeset/breezy-cycles-count.md b/.changeset/breezy-cycles-count.md new file mode 100644 index 0000000000..81998d9e8b --- /dev/null +++ b/.changeset/breezy-cycles-count.md @@ -0,0 +1,39 @@ +--- +'@backstage/plugin-events-backend-test-utils': patch +'@backstage/plugin-events-backend': patch +'@backstage/plugin-events-node': patch +--- + +Add new `EventsService` as well as `eventsServiceRef` for the new backend system. + +**Summary:** + +- new: + `EventsService`, `eventsServiceRef`, `TestEventsService` +- deprecated: + `EventBroker`, `EventPublisher`, `EventSubscriber`, `DefaultEventBroker`, `EventsBackend`, + most parts of `EventsExtensionPoint` (alpha), + `TestEventBroker`, `TestEventPublisher`, `TestEventSubscriber` + +Add the `eventsServiceRef` as dependency to your backend plugins +or backend plugin modules. + +**Details:** + +The previous implementation using the `EventsExtensionPoint` was added in the early stages +of the new backend system and does not respect the plugin isolation. +This made it not compatible anymore with the new backend system. + +Additionally, the previous interfaces had some room for simplification, +supporting less exposure of internal concerns as well. + +Hereby, this change adds a new `EventsService` interface as replacement for the now deprecated `EventBroker`. +The new interface does not require any `EventPublisher` or `EventSubscriber` interfaces anymore. +Instead, it is expected that the `EventsService` gets passed into publishers and subscribers, +and used internally. There is no need to expose anything of that at their own interfaces. + +Most parts of `EventsExtensionPoint` (alpha) are deprecated as well and were not usable +(by other plugins or their modules) anyway. + +The `DefaultEventBroker` implementation is deprecated and wraps the new `DefaultEventsService` implementation. +Optionally, an instance can be passed as argument to allow mixed setups to operate alongside. diff --git a/.changeset/bright-bulldogs-whisper.md b/.changeset/bright-bulldogs-whisper.md new file mode 100644 index 0000000000..bedc367856 --- /dev/null +++ b/.changeset/bright-bulldogs-whisper.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-linguist-backend': patch +--- + +Migrated to support new auth services. diff --git a/.changeset/brown-items-hammer.md b/.changeset/brown-items-hammer.md deleted file mode 100644 index fa023a026b..0000000000 --- a/.changeset/brown-items-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-okta-provider': patch ---- - -Added missing `additionalScopes` option to configuration schema. diff --git a/.changeset/brown-peaches-hunt.md b/.changeset/brown-peaches-hunt.md deleted file mode 100644 index fc10acc211..0000000000 --- a/.changeset/brown-peaches-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Fix a bug with S3 Fetch that caused all objects to be flattened within a single folder on the local file system. diff --git a/.changeset/calm-cups-rule.md b/.changeset/calm-cups-rule.md deleted file mode 100644 index 48cb8a2012..0000000000 --- a/.changeset/calm-cups-rule.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-dynamic-feature-service': patch ---- - -Fix wrong `alpha` support in dynamic plugins support: the `alpha` sub-package should not be required for the dynamic plugins to be loaded under the new backend system. diff --git a/.changeset/calm-items-double.md b/.changeset/calm-items-double.md deleted file mode 100644 index 3db8ad57d9..0000000000 --- a/.changeset/calm-items-double.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-github': minor ---- - -Allow to force the creation of a pull request from a forked repository diff --git a/.changeset/calm-onions-exercise.md b/.changeset/calm-onions-exercise.md deleted file mode 100644 index f1c58a173f..0000000000 --- a/.changeset/calm-onions-exercise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/repo-tools': patch ---- - -Resolved an issue with generate-catalog-info where it was replacing upper case characters with -. diff --git a/.changeset/calm-pans-work.md b/.changeset/calm-pans-work.md new file mode 100644 index 0000000000..b74c02d243 --- /dev/null +++ b/.changeset/calm-pans-work.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Resolve the `basePath` before constructing the target path diff --git a/.changeset/chilled-chefs-notice.md b/.changeset/chilled-chefs-notice.md deleted file mode 100644 index a12babb2a4..0000000000 --- a/.changeset/chilled-chefs-notice.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-rails': patch ---- - -Make `containerRunner` argument optional diff --git a/.changeset/chilled-dolls-accept.md b/.changeset/chilled-dolls-accept.md new file mode 100644 index 0000000000..1df2b0dc98 --- /dev/null +++ b/.changeset/chilled-dolls-accept.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-node': patch +--- + +Deprecated the `getBearerTokenFromAuthorizationHeader` function, which is being replaced by the new `HttpAuthService`. diff --git a/.changeset/chilled-dolphins-tap.md b/.changeset/chilled-dolphins-tap.md new file mode 100644 index 0000000000..c4f4c98aec --- /dev/null +++ b/.changeset/chilled-dolphins-tap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-github-pull-requests-board': patch +--- + +The `CardHeader` component in the `github-pull-requests-board` plugin will show the status for the PR diff --git a/.changeset/chilled-goats-matter.md b/.changeset/chilled-goats-matter.md new file mode 100644 index 0000000000..b66381452f --- /dev/null +++ b/.changeset/chilled-goats-matter.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-lighthouse-backend': patch +--- + +**BREAKING**: The `createScheduler` function now requires the `discovery` service to be forwarded from the plugin environment. This is part of the migration to support new auth services. diff --git a/.changeset/chilled-ways-wave.md b/.changeset/chilled-ways-wave.md deleted file mode 100644 index 68e4d1eb7d..0000000000 --- a/.changeset/chilled-ways-wave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch ---- - -fix for: converting circular structure to JSON error diff --git a/.changeset/chilly-seahorses-bake.md b/.changeset/chilly-seahorses-bake.md deleted file mode 100644 index 8ab80cf93e..0000000000 --- a/.changeset/chilly-seahorses-bake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-compat-api': patch ---- - -The backwards compatibility provider will now use the new `ComponentsApi` and `IconsApi` when implementing the old `AppContext`. diff --git a/.changeset/clever-chicken-jog.md b/.changeset/clever-chicken-jog.md deleted file mode 100644 index de65947105..0000000000 --- a/.changeset/clever-chicken-jog.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-react': minor ---- - -Added support for server side text filtering to paginated entity requests. diff --git a/.changeset/clever-donkeys-fry.md b/.changeset/clever-donkeys-fry.md new file mode 100644 index 0000000000..8098bba682 --- /dev/null +++ b/.changeset/clever-donkeys-fry.md @@ -0,0 +1,5 @@ +--- +'@backstage/config': minor +--- + +The `ConfigReader` now treats `null` values as present but explicitly undefined, meaning it will not fall back to the next level of configuration. diff --git a/.changeset/clever-eagles-boil.md b/.changeset/clever-eagles-boil.md new file mode 100644 index 0000000000..a2f47ed092 --- /dev/null +++ b/.changeset/clever-eagles-boil.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-adr': patch +'@backstage/plugin-adr-common': patch +--- + +Fixed Azure DevOps ADR file path reading diff --git a/.changeset/clever-steaks-hope.md b/.changeset/clever-steaks-hope.md deleted file mode 100644 index 94c6e8ee29..0000000000 --- a/.changeset/clever-steaks-hope.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-unprocessed': patch ---- - -Explicitly only depend on the `use` method from the `HttpRouterService`. diff --git a/.changeset/cold-boats-sell.md b/.changeset/cold-boats-sell.md new file mode 100644 index 0000000000..5b0eba7301 --- /dev/null +++ b/.changeset/cold-boats-sell.md @@ -0,0 +1,23 @@ +--- +'@backstage/plugin-auth-backend-module-guest-provider': minor +--- + +Adds a new guest provider that maps guest users to actual tokens. This also shifts the default guest login to `user:development/guest` to reduce overlap with your production/real data. To change that (or set it back to the old default, use the new `auth.providers.guest.userEntityRef` config key) like so, + +```yaml title=app-config.yaml +auth: + providers: + guest: + userEntityRef: user:default/guest +``` + +This also adds a new property to control the ownership entity refs, + +```yaml title=app-config.yaml +auth: + providers: + guest: + ownershipEntityRefs: + - guests + - development/custom +``` diff --git a/.changeset/cold-cheetahs-pull.md b/.changeset/cold-cheetahs-pull.md deleted file mode 100644 index 140a564e4f..0000000000 --- a/.changeset/cold-cheetahs-pull.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-bitbucket-server': minor -'@backstage/plugin-scaffolder-backend': patch ---- - -New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-server`. - -Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` -and replaces its actions related to Bitbucket Server. - -- `publish:bitbucketServer` -- `publish:bitbucketServer:pull-request` diff --git a/.changeset/cold-cooks-care.md b/.changeset/cold-cooks-care.md deleted file mode 100644 index 56c41a55e9..0000000000 --- a/.changeset/cold-cooks-care.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/plugin-entity-validation': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-catalog-graph': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-catalog': patch ---- - -Change default icon for unknown entities to nothing instead of the help icon. diff --git a/.changeset/cold-dolphins-raise.md b/.changeset/cold-dolphins-raise.md new file mode 100644 index 0000000000..1581edcc14 --- /dev/null +++ b/.changeset/cold-dolphins-raise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Migrated the `GithubLocationAnalyzer` to support new auth services. diff --git a/.changeset/cool-clouds-jump.md b/.changeset/cool-clouds-jump.md new file mode 100644 index 0000000000..c94ab69a38 --- /dev/null +++ b/.changeset/cool-clouds-jump.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': minor +--- + +Fix knip-report command to send 1 exit status in case of fail diff --git a/.changeset/cool-islands-impress.md b/.changeset/cool-islands-impress.md deleted file mode 100644 index df6df1ada2..0000000000 --- a/.changeset/cool-islands-impress.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-sites': patch ---- - -Updated README diff --git a/.changeset/cool-walls-applaud.md b/.changeset/cool-walls-applaud.md deleted file mode 100644 index d548b926fb..0000000000 --- a/.changeset/cool-walls-applaud.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-api-docs': patch ---- - -Updated README to list AsyncApi v3 as supported diff --git a/.changeset/create-app-1706621803.md b/.changeset/create-app-1709052411.md similarity index 100% rename from .changeset/create-app-1706621803.md rename to .changeset/create-app-1709052411.md diff --git a/.changeset/curvy-carrots-dream.md b/.changeset/curvy-carrots-dream.md new file mode 100644 index 0000000000..64f1dfffb0 --- /dev/null +++ b/.changeset/curvy-carrots-dream.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +The translation support for the `Link` component has been removed for now, in order to avoid broad breakages of tests in existing projects where the component is tested without being wrapped in an API provider. diff --git a/.changeset/curvy-icons-peel.md b/.changeset/curvy-icons-peel.md deleted file mode 100644 index bbadcb0a55..0000000000 --- a/.changeset/curvy-icons-peel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-badges-backend': patch ---- - -Updating the `authorization` middleware to call the Catalog to check that the requesting user has permission to see the Entity before generating the UUID. diff --git a/.changeset/cyan-bats-lick.md b/.changeset/cyan-bats-lick.md deleted file mode 100644 index 0683d806b0..0000000000 --- a/.changeset/cyan-bats-lick.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-devops-backend': patch ---- - -Added a note about Service Principles diff --git a/.changeset/cyan-dryers-share.md b/.changeset/cyan-dryers-share.md new file mode 100644 index 0000000000..4c1ce1d553 --- /dev/null +++ b/.changeset/cyan-dryers-share.md @@ -0,0 +1,5 @@ +--- +'@backstage/errors': patch +--- + +Fixed an issue that was causing ResponseError not to report the HTTP status from the provided response. diff --git a/.changeset/cyan-ducks-sin.md b/.changeset/cyan-ducks-sin.md deleted file mode 100644 index 4b69fabcc2..0000000000 --- a/.changeset/cyan-ducks-sin.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/backend-common': minor ---- - -**BREAKING**: `A gitilesBaseUrl` must be provided for the Gerrit integration to work. -You can disable this check by setting `DISABLE_GERRIT_GITILES_REQUIREMENT=1` but -this will be removed in a future release. If you are not able to use the Gitiles -Gerrit plugin, please open an issue towards `https://github.com/backstage/backstage` diff --git a/.changeset/cyan-icons-rest.md b/.changeset/cyan-icons-rest.md deleted file mode 100644 index 3092c1bc90..0000000000 --- a/.changeset/cyan-icons-rest.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@backstage/plugin-explore-backend': patch ---- - -Add support for the new backend system. - -A new backend plugin for the explore backend -was added and exported as `default`. - -You can use it with the new backend system like - -```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-explore-backend')); -``` diff --git a/.changeset/cyan-toes-repeat.md b/.changeset/cyan-toes-repeat.md new file mode 100644 index 0000000000..7963e0cb36 --- /dev/null +++ b/.changeset/cyan-toes-repeat.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-entity-feedback-backend': patch +--- + +Add in description for 400 response when encountering an invalid rating request diff --git a/.changeset/dirty-apes-divide.md b/.changeset/dirty-apes-divide.md new file mode 100644 index 0000000000..e90bc7f5e1 --- /dev/null +++ b/.changeset/dirty-apes-divide.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-search-backend-module-elasticsearch': patch +'@backstage/plugin-search-backend-module-pg': patch +--- + +Start importing `QueryTranslator`, `QueryRequestOptions` and `SearchEngine` from the `@backstage/plugin-search-backend-node`. diff --git a/.changeset/dirty-cheetahs-shave.md b/.changeset/dirty-cheetahs-shave.md deleted file mode 100644 index 1691adec2d..0000000000 --- a/.changeset/dirty-cheetahs-shave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Support additional algorithms in the `/.well-known/openid-configuration` endpoint. diff --git a/.changeset/dirty-mirrors-retire.md b/.changeset/dirty-mirrors-retire.md deleted file mode 100644 index cb0bcd66a8..0000000000 --- a/.changeset/dirty-mirrors-retire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-compat-api': patch ---- - -Updated dependency `@oriflame/backstage-plugin-score-card` to `^0.8.0`. diff --git a/.changeset/dirty-plums-fix.md b/.changeset/dirty-plums-fix.md deleted file mode 100644 index fb0655377c..0000000000 --- a/.changeset/dirty-plums-fix.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend-module-jsonfc': patch ---- - -Add support for the new backend system. - -A new backend module for the tech-insights backend -was added and exported as `default`. - -The module will register the `JsonRulesEngineFactCheckerFactory` -as `FactCheckerFactory`, loading checks from the config. - -You can use it with the new backend system like - -```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-tech-insights-backend-module-jsonfc')); -``` diff --git a/.changeset/dry-impalas-serve.md b/.changeset/dry-impalas-serve.md new file mode 100644 index 0000000000..3b1f502b9c --- /dev/null +++ b/.changeset/dry-impalas-serve.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-stack-overflow': patch +--- + +fix: fix decode issues in title and author fields in `StackOverflowSearchResultListItem` diff --git a/.changeset/dry-lizards-taste.md b/.changeset/dry-lizards-taste.md deleted file mode 100644 index 90e4c9f659..0000000000 --- a/.changeset/dry-lizards-taste.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/app-defaults': patch -'@backstage/plugin-catalog': patch ---- - -Change default icon for `kind:resource` to the storage icon. diff --git a/.changeset/dry-lobsters-flash.md b/.changeset/dry-lobsters-flash.md deleted file mode 100644 index 9815bf62f4..0000000000 --- a/.changeset/dry-lobsters-flash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-app-api': patch ---- - -Added `IconsApi` implementation and the ability to configure icons through the `icons` option for `createApp` and `createSpecializedApp`. This is not a long-term solution as icons should be installable via extensions instead. This is just a stop-gap to make sure there is feature parity with the existing frontend system. diff --git a/.changeset/dry-vans-kiss.md b/.changeset/dry-vans-kiss.md deleted file mode 100644 index 5d11df989c..0000000000 --- a/.changeset/dry-vans-kiss.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Simple typo fix in the fetch:template action example on the word 'skeleton'. diff --git a/.changeset/dull-bottles-learn.md b/.changeset/dull-bottles-learn.md deleted file mode 100644 index e279f9e0ad..0000000000 --- a/.changeset/dull-bottles-learn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-gcp-projects': patch ---- - -Add a `x-google-api-client` header for calls towards Google Cloud Projects diff --git a/.changeset/dull-dolphins-explain.md b/.changeset/dull-dolphins-explain.md deleted file mode 100644 index d8864e72e8..0000000000 --- a/.changeset/dull-dolphins-explain.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-aws': patch ---- - -The default EKS cluster entity transformer now sets the new -`kubernetes.io/x-k8s-aws-id` annotation. diff --git a/.changeset/dull-fireants-repeat.md b/.changeset/dull-fireants-repeat.md deleted file mode 100644 index 4e849bfbaf..0000000000 --- a/.changeset/dull-fireants-repeat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Use the externalized `auth-backend-module-microsoft-provider` again. diff --git a/.changeset/eight-fireants-crash.md b/.changeset/eight-fireants-crash.md new file mode 100644 index 0000000000..a4eb903585 --- /dev/null +++ b/.changeset/eight-fireants-crash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-playlist-backend': patch +--- + +Migrated to support new auth services. diff --git a/.changeset/eight-hounds-dream.md b/.changeset/eight-hounds-dream.md deleted file mode 100644 index 8bf945d684..0000000000 --- a/.changeset/eight-hounds-dream.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-adr': patch ---- - -Fix alignment of text in `AdrSearchResultListItem`. Update size and font to match other `SearchResultListItem`. diff --git a/.changeset/eight-oranges-wave.md b/.changeset/eight-oranges-wave.md deleted file mode 100644 index cc363178c2..0000000000 --- a/.changeset/eight-oranges-wave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-node': patch ---- - -Fix error when Microsoft tokens (or any other using the `defaultProfileTransform`) are requested without the profile scope. diff --git a/.changeset/eight-pumas-rule.md b/.changeset/eight-pumas-rule.md deleted file mode 100644 index 166ebd8bd3..0000000000 --- a/.changeset/eight-pumas-rule.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-kubernetes-react': minor ---- - -**BREAKING** The `PodScope`, `PodAndErrors`, and `PodExecTerminalProps` types no -longer have a `clusterName` field; instead they now have the field `cluster` -which contains the full `ClusterAttributes`. diff --git a/.changeset/eighty-suits-admire.md b/.changeset/eighty-suits-admire.md new file mode 100644 index 0000000000..5b889c8087 --- /dev/null +++ b/.changeset/eighty-suits-admire.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-node': patch +--- + +Fixed file corruption for non UTF-8 data in fetch contents diff --git a/.changeset/eleven-cows-learn.md b/.changeset/eleven-cows-learn.md new file mode 100644 index 0000000000..3af2c6dba1 --- /dev/null +++ b/.changeset/eleven-cows-learn.md @@ -0,0 +1,9 @@ +--- +'@backstage/backend-plugin-api': patch +--- + +Added the new [`auth`](https://backstage.io/docs/backend-system/core-services/auth/), [`httpAuth`](https://backstage.io/docs/backend-system/core-services/http-auth), and [`userInfo`](https://backstage.io/docs/backend-system/core-services/user-info) services that were created as part of [BEP-0003](https://github.com/backstage/backstage/tree/master/beps/0003-auth-architecture-evolution) to the `coreServices`. + +At the same time, the [`httpRouter`](https://backstage.io/docs/backend-system/core-services/http-router) service gained a new `addAuthPolicy` method that lets your plugin declare exemptions to the default auth policy - for example if you want to allow unauthenticated or cookie-based access to some subset of your feature routes. + +If you have migrated to the new backend system, please see the [Auth Service Migration tutorial](https://backstage.io/docs/tutorials/auth-service-migration) for more information on how to move toward using these services. diff --git a/.changeset/eleven-walls-relate.md b/.changeset/eleven-walls-relate.md deleted file mode 100644 index 43c1d5dea9..0000000000 --- a/.changeset/eleven-walls-relate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-oidc-provider': patch ---- - -Fixed a bug where the OIDC authenticator did not properly persist granted OAuth scopes. diff --git a/.changeset/empty-ladybugs-perform.md b/.changeset/empty-ladybugs-perform.md new file mode 100644 index 0000000000..a62c4b132b --- /dev/null +++ b/.changeset/empty-ladybugs-perform.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Move the text-transform styling on BackstageTableHeader from inline styling to `withStyles` so it can be customised easier diff --git a/.changeset/empty-ligers-hang.md b/.changeset/empty-ligers-hang.md deleted file mode 100644 index c17609712a..0000000000 --- a/.changeset/empty-ligers-hang.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-react': patch ---- - -Overflowing labels in OwnerPicker (Catalog) are now truncated. Hovering over them shows the full label diff --git a/.changeset/empty-wolves-rule.md b/.changeset/empty-wolves-rule.md new file mode 100644 index 0000000000..a549cf3628 --- /dev/null +++ b/.changeset/empty-wolves-rule.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-code-coverage-backend': patch +--- + +Fix jacoco convertor to not require annotation to be set to scm-only. diff --git a/.changeset/wicked-ants-reflect.md b/.changeset/fair-cheetahs-suffer.md similarity index 64% rename from .changeset/wicked-ants-reflect.md rename to .changeset/fair-cheetahs-suffer.md index 4882d12a34..a41237acaa 100644 --- a/.changeset/wicked-ants-reflect.md +++ b/.changeset/fair-cheetahs-suffer.md @@ -2,7 +2,6 @@ '@backstage/plugin-notifications-backend': patch '@backstage/plugin-notifications-common': patch '@backstage/plugin-notifications-node': patch -'@backstage/plugin-notifications': patch --- -Initial notifications system for backstage +Move notification origin resolving to backend with new auth diff --git a/.changeset/fair-mirrors-hammer.md b/.changeset/fair-mirrors-hammer.md deleted file mode 100644 index 3884835d11..0000000000 --- a/.changeset/fair-mirrors-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-graph': patch ---- - -use `CatalogClient.getEntitiesByRefs()` to reduce the number of backend requests from plugin `catalog-graph` diff --git a/.changeset/famous-forks-listen.md b/.changeset/famous-forks-listen.md new file mode 100644 index 0000000000..784fec7411 --- /dev/null +++ b/.changeset/famous-forks-listen.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Removed inline styling in breadcrumbs and replaced with a theme reachable class of BreadcrumbsCurrentPage diff --git a/.changeset/famous-houses-thank.md b/.changeset/famous-houses-thank.md deleted file mode 100644 index 8fa0eb2d75..0000000000 --- a/.changeset/famous-houses-thank.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/frontend-test-utils': patch -'@backstage/frontend-app-api': patch -'@backstage/core-compat-api': patch ---- - -Updates to use the new `RouteResolutionsApi`. diff --git a/.changeset/famous-zoos-remain.md b/.changeset/famous-zoos-remain.md deleted file mode 100644 index be4147c21e..0000000000 --- a/.changeset/famous-zoos-remain.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@backstage/plugin-entity-feedback-backend': patch -'@backstage/plugin-azure-devops-backend': patch -'@backstage/plugin-lighthouse-backend': patch -'@backstage/plugin-devtools-backend': patch -'@backstage/plugin-linguist-backend': patch -'@backstage/plugin-badges-backend': patch -'@backstage/plugin-adr-backend': patch -'@backstage/plugin-airbrake': patch ---- - -Updated New Backend System instructions to use default import diff --git a/.changeset/fast-buses-exercise.md b/.changeset/fast-buses-exercise.md new file mode 100644 index 0000000000..def8ce2ca6 --- /dev/null +++ b/.changeset/fast-buses-exercise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-entity-feedback-backend': patch +--- + +Migrated to support new auth services. diff --git a/.changeset/fast-jeans-walk.md b/.changeset/fast-jeans-walk.md deleted file mode 100644 index f733c9f464..0000000000 --- a/.changeset/fast-jeans-walk.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': minor -'@backstage/plugin-scaffolder': minor ---- - -Remove the old legacy exports from `/alpha` diff --git a/.changeset/fast-onions-own.md b/.changeset/fast-onions-own.md deleted file mode 100644 index 6977b035bc..0000000000 --- a/.changeset/fast-onions-own.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -`FetchUrlReader#readUrl()` now supports passing an optional `token` to authenticate requests. diff --git a/.changeset/fifty-adults-watch.md b/.changeset/fifty-adults-watch.md deleted file mode 100644 index 8bff1c28cd..0000000000 --- a/.changeset/fifty-adults-watch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-devtools': patch ---- - -Refactored code to improve accessibility by moving elements outside the `ul` tag and placing them appropriately. Also adjusted theme to offer better contrast. diff --git a/.changeset/fifty-files-argue.md b/.changeset/fifty-files-argue.md deleted file mode 100644 index b80b2989af..0000000000 --- a/.changeset/fifty-files-argue.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/backend-test-utils': minor -'@backstage/backend-common': minor ---- - -drop databases after unit tests if the database instance is not running in docker diff --git a/.changeset/fifty-insects-yell.md b/.changeset/fifty-insects-yell.md new file mode 100644 index 0000000000..feedd844a5 --- /dev/null +++ b/.changeset/fifty-insects-yell.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-test-utils': patch +--- + +Added `mockServices.userInfo`, which now also automatically is made available in test backends. diff --git a/.changeset/fifty-moons-study.md b/.changeset/fifty-moons-study.md new file mode 100644 index 0000000000..3744960870 --- /dev/null +++ b/.changeset/fifty-moons-study.md @@ -0,0 +1,5 @@ +--- +'@backstage/theme': patch +--- + +Exported `defaultTypography` to make adjusting these values in a custom theme easier diff --git a/.changeset/five-beers-accept.md b/.changeset/five-beers-accept.md new file mode 100644 index 0000000000..d5dbcf88d7 --- /dev/null +++ b/.changeset/five-beers-accept.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Removed hardcoded font-family on select input diff --git a/.changeset/honest-pets-judge.md b/.changeset/five-hats-accept.md similarity index 51% rename from .changeset/honest-pets-judge.md rename to .changeset/five-hats-accept.md index 468fc1b6d5..11ee4ff276 100644 --- a/.changeset/honest-pets-judge.md +++ b/.changeset/five-hats-accept.md @@ -1,7 +1,6 @@ --- '@backstage/plugin-notifications-backend': patch -'@backstage/plugin-notifications-common': patch '@backstage/plugin-notifications': patch --- -Add support for signal type in notifications +The Notifications can be newly filtered based on the Created Date. diff --git a/.changeset/five-hornets-wash.md b/.changeset/five-hornets-wash.md deleted file mode 100644 index c29debb518..0000000000 --- a/.changeset/five-hornets-wash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Fix some deprecations and misplaced `await` usage. diff --git a/.changeset/five-mayflies-juggle.md b/.changeset/five-mayflies-juggle.md new file mode 100644 index 0000000000..56bf28a8e9 --- /dev/null +++ b/.changeset/five-mayflies-juggle.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-sites-backend': patch +--- + +Added new backend system for the Azure Sites backend plugin diff --git a/.changeset/flat-badgers-attack.md b/.changeset/flat-badgers-attack.md new file mode 100644 index 0000000000..69250d0ded --- /dev/null +++ b/.changeset/flat-badgers-attack.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Support i18n for core components diff --git a/.changeset/flat-roses-happen.md b/.changeset/flat-roses-happen.md deleted file mode 100644 index e20e063b4f..0000000000 --- a/.changeset/flat-roses-happen.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-bitbucket': minor ---- - -Split `@backstage/plugin-scaffolder-backend-module-bitbucket` into -`@backstage/plugin-scaffolder-backend-module-bitbucket-cloud` and -`@backstage/plugin-scaffolder-backend-module-bitbucket-server`. - -`@backstage/plugin-scaffolder-backend-module-bitbucket` was **deprecated** in favor of these two replacements. - -Please use any of the two replacements depending on your needs. - -```diff -- backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket')); -+ backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-cloud')); -+ backend.add(import('@backstage/plugin-scaffolder-backend-module-bitbucket-server')); -``` diff --git a/.changeset/flat-wasps-fold.md b/.changeset/flat-wasps-fold.md deleted file mode 100644 index 653dc0d78f..0000000000 --- a/.changeset/flat-wasps-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch ---- - -Added initial `IconsApi` definition. diff --git a/.changeset/fluffy-jeans-eat.md b/.changeset/fluffy-jeans-eat.md deleted file mode 100644 index 8935c33937..0000000000 --- a/.changeset/fluffy-jeans-eat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Added check for the `repository` field in the `repo fix` command. diff --git a/.changeset/forty-beers-sniff.md b/.changeset/forty-beers-sniff.md deleted file mode 100644 index 130726f94f..0000000000 --- a/.changeset/forty-beers-sniff.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/plugin-catalog-graph': patch ---- - -Added possibility to show arrow heads for graph edges for better understandability. - -In order to show arrow heads in the catalog graph page, add `showArrowHeads` attribute to `CatalogGraphPage` component -(typically in `packages/app/src/App.tsx`): - -```diff -- -+ -``` - -In order to show arrow heads in entity graphs, add `showArrowHeads` attribute to `EntityCatalogGraphCard` components -(typically multiple occurrences in `packages/app/src/components/catalog/EntityPage.tsx`): - -```diff -- -+ -``` diff --git a/.changeset/forty-eagles-kick.md b/.changeset/forty-eagles-kick.md deleted file mode 100644 index 4d701a729b..0000000000 --- a/.changeset/forty-eagles-kick.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-react': patch ---- - -Pod dialogs display cluster title when specified. diff --git a/.changeset/forty-oranges-joke.md b/.changeset/forty-oranges-joke.md new file mode 100644 index 0000000000..28d162442c --- /dev/null +++ b/.changeset/forty-oranges-joke.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration-react': patch +--- + +Updated `microsoftAuthApi` scopes for Azure DevOps to be fully qualified. diff --git a/.changeset/four-mugs-try.md b/.changeset/four-mugs-try.md deleted file mode 100644 index 11fdf783d4..0000000000 --- a/.changeset/four-mugs-try.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': minor ---- - -**BREAKING**: Removed the `SidebarIntro` component as it was providing instructions for features that do not exist, along with `IntroCard`. If you were relying on this component and want to keep using it you can refer to the original implementations of [`SidebarIntro`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L149) and [`IntroCard`](https://github.com/backstage/backstage/blob/80f2413334ed9b221ec3c2b7c22fa737ad8d8885/packages/core-components/src/layout/Sidebar/Intro.tsx#L100). diff --git a/.changeset/four-walls-perform.md b/.changeset/four-walls-perform.md deleted file mode 100644 index 5275da7b79..0000000000 --- a/.changeset/four-walls-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': minor ---- - -Updating the `EntityPicker` to only select `kind` `metadata.name` and `metadata.namespace` by default to improve performance on larger datasets. diff --git a/.changeset/fresh-gifts-smile.md b/.changeset/fresh-gifts-smile.md deleted file mode 100644 index 446e9f3c54..0000000000 --- a/.changeset/fresh-gifts-smile.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-module-addons-contrib': patch ---- - -Fixed the value label text color in dark mode for the TextSize addon. diff --git a/.changeset/fresh-paws-raise.md b/.changeset/fresh-paws-raise.md deleted file mode 100644 index 61712db1e8..0000000000 --- a/.changeset/fresh-paws-raise.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-kubernetes-react': patch ---- - -The `ErrorPanel` component will display the `title` field (when specified) for -clusters with errors. diff --git a/.changeset/fresh-rings-tell.md b/.changeset/fresh-rings-tell.md new file mode 100644 index 0000000000..82fe952e4a --- /dev/null +++ b/.changeset/fresh-rings-tell.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Fix handling of default plugins that have configuration diff --git a/.changeset/friendly-cheetahs-rescue.md b/.changeset/friendly-cheetahs-rescue.md deleted file mode 100644 index 4f54a022af..0000000000 --- a/.changeset/friendly-cheetahs-rescue.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Fixed an issue where a misleading error message would be logged when an -unsupported service locator method was specified. diff --git a/.changeset/friendly-coats-travel.md b/.changeset/friendly-coats-travel.md new file mode 100644 index 0000000000..70d684a3da --- /dev/null +++ b/.changeset/friendly-coats-travel.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-code-coverage-backend': patch +--- + +Migrated to support new auth services. diff --git a/.changeset/friendly-news-sin.md b/.changeset/friendly-news-sin.md new file mode 100644 index 0000000000..af64190f9c --- /dev/null +++ b/.changeset/friendly-news-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Create a component abstraction to consume system icons. diff --git a/.changeset/friendly-terms-love.md b/.changeset/friendly-terms-love.md deleted file mode 100644 index 18fc399740..0000000000 --- a/.changeset/friendly-terms-love.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/repo-tools': patch ---- - -Introduced `knip` to the `knip-reports` command, which generates a `knip-report.md` file for your packages with dependency warnings, if any. diff --git a/.changeset/funny-buttons-sip.md b/.changeset/funny-buttons-sip.md deleted file mode 100644 index c455b8a31b..0000000000 --- a/.changeset/funny-buttons-sip.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Move the `NODE_OPTIONS` messaging for `--no-node-snapshot` to the `SecureTemplater` in order to get better messaging at runtime diff --git a/.changeset/funny-flies-collect.md b/.changeset/funny-flies-collect.md new file mode 100644 index 0000000000..40b8d481ed --- /dev/null +++ b/.changeset/funny-flies-collect.md @@ -0,0 +1,12 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/backend-app-api': patch +'@backstage/backend-common': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/eslint-plugin': patch +'@backstage/plugin-auth-backend': patch +'@backstage/repo-tools': patch +'@backstage/cli': patch +--- + +Bump dependency `minimatch` to v9 diff --git a/.changeset/funny-meals-tease.md b/.changeset/funny-meals-tease.md deleted file mode 100644 index 3dce739952..0000000000 --- a/.changeset/funny-meals-tease.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-github': minor ---- - -support oidc customization diff --git a/.changeset/funny-timers-visit.md b/.changeset/funny-timers-visit.md deleted file mode 100644 index 3d802328b5..0000000000 --- a/.changeset/funny-timers-visit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-react': patch ---- - -Fix broken XtermJS CSS import diff --git a/.changeset/fuzzy-comics-collect.md b/.changeset/fuzzy-comics-collect.md deleted file mode 100644 index 5ce6b3c967..0000000000 --- a/.changeset/fuzzy-comics-collect.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend-module-jsonfc': patch ---- - -Support loading `TechInsightsJsonRuleCheck` instances from config. - -Uses the check `id` as key. - -Example: - -```yaml title="app-config.yaml" -techInsights: - factChecker: - checks: - groupOwnerCheck: - type: json-rules-engine - name: Group Owner Check - description: Verifies that a group has been set as the spec.owner for this entity - factIds: - - entityOwnershipFactRetriever - rule: - conditions: - all: - - fact: hasGroupOwner - operator: equal - value: true -``` diff --git a/.changeset/fuzzy-turtles-camp.md b/.changeset/fuzzy-turtles-camp.md deleted file mode 100644 index ca1767bd30..0000000000 --- a/.changeset/fuzzy-turtles-camp.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli-node': patch ---- - -Added `repository` field to `BackstagePackageJson` type. diff --git a/.changeset/giant-suits-switch.md b/.changeset/giant-suits-switch.md deleted file mode 100644 index 77d0e62c73..0000000000 --- a/.changeset/giant-suits-switch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-devops-backend': patch ---- - -Fixed bug with `extractPartsFromAsset` that resulted in a leading `.` being removed from the path in an otherwise valid path (ex. `.assets/image.png`). The leading `.` will now only be moved for paths beginning with `./`. diff --git a/.changeset/good-seals-argue.md b/.changeset/good-seals-argue.md new file mode 100644 index 0000000000..c50d275a87 --- /dev/null +++ b/.changeset/good-seals-argue.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-github-actions': patch +--- + +Fixed bug in WorkflowRunStatus component where skipped and cancelled workflow runs appeared as success diff --git a/.changeset/gorgeous-apples-reply.md b/.changeset/gorgeous-apples-reply.md new file mode 100644 index 0000000000..a6bf04d0fe --- /dev/null +++ b/.changeset/gorgeous-apples-reply.md @@ -0,0 +1,5 @@ +--- +'@backstage/config-loader': minor +--- + +Forward `null` values read from configuration files in configuration data, rather than treating them as an absence of config. diff --git a/.changeset/gorgeous-bobcats-press.md b/.changeset/gorgeous-bobcats-press.md deleted file mode 100644 index 6193918cb7..0000000000 --- a/.changeset/gorgeous-bobcats-press.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-app-api': patch ---- - -Include the extension point ID and the module ID in the backend init error message. diff --git a/.changeset/gorgeous-pumas-draw.md b/.changeset/gorgeous-pumas-draw.md deleted file mode 100644 index 2e94c61c63..0000000000 --- a/.changeset/gorgeous-pumas-draw.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-analytics-module-newrelic-browser': minor -'@backstage/plugin-analytics-module-ga4': minor -'@backstage/plugin-analytics-module-ga': minor -'@backstage/core-compat-api': minor ---- - -Add support to the new analytics api. diff --git a/.changeset/gorgeous-ways-applaud.md b/.changeset/gorgeous-ways-applaud.md deleted file mode 100644 index 4b28e2e656..0000000000 --- a/.changeset/gorgeous-ways-applaud.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-signals-backend': patch -'@backstage/plugin-signals-react': patch -'@backstage/plugin-signals-node': patch -'@backstage/plugin-signals': patch ---- - -Fix disconnect loop on server start diff --git a/.changeset/great-rats-collect.md b/.changeset/great-rats-collect.md deleted file mode 100644 index 24b01c0fe3..0000000000 --- a/.changeset/great-rats-collect.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': minor ---- - -**BREAKING** The backend will fail to start if two clusters in the app-config -have the same name. The requirement for unique names has been declared in the -docs for some time, but is now enforced. diff --git a/.changeset/green-dogs-fold.md b/.changeset/green-dogs-fold.md deleted file mode 100644 index c23f7c2a29..0000000000 --- a/.changeset/green-dogs-fold.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend': patch -'@backstage/plugin-tech-insights-node': patch ---- - -Add support for the new backend system. - -A new backend plugin for the tech-insights backend -was added and exported as `default`. - -You can use it with the new backend system like - -```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-tech-insights-backend')); -``` diff --git a/.changeset/grumpy-poets-study.md b/.changeset/grumpy-poets-study.md deleted file mode 100644 index 9925f2f87a..0000000000 --- a/.changeset/grumpy-poets-study.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -Added basic support for the new frontend system, exported from the `/alpha` subpath. diff --git a/.changeset/happy-peas-hunt.md b/.changeset/happy-peas-hunt.md deleted file mode 100644 index 8fbac9c33a..0000000000 --- a/.changeset/happy-peas-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -The `/clusters` API now surfaces cluster titles. diff --git a/.changeset/healthy-bees-deliver.md b/.changeset/healthy-bees-deliver.md deleted file mode 100644 index 80da17dc0b..0000000000 --- a/.changeset/healthy-bees-deliver.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-common': patch ---- - -The `ClusterAttributes` type now includes the cluster title. diff --git a/.changeset/healthy-experts-rhyme.md b/.changeset/healthy-experts-rhyme.md new file mode 100644 index 0000000000..ca4618f1f5 --- /dev/null +++ b/.changeset/healthy-experts-rhyme.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-azure-sites-backend': minor +--- + +**BREAKING**: The `createRouter` method now requires the `discovery` service to be forwarded from the plugin environment. This is part of the migration to support new auth services. diff --git a/.changeset/healthy-goats-jump.md b/.changeset/healthy-goats-jump.md deleted file mode 100644 index e5b43d3f8c..0000000000 --- a/.changeset/healthy-goats-jump.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-kubernetes': patch -'@backstage/plugin-kubernetes-react': patch ---- - -The `ErrorReporting` component's cluster column now displays cluster titles when -specified. diff --git a/.changeset/heavy-cameras-provide.md b/.changeset/heavy-cameras-provide.md deleted file mode 100644 index 1d86f20592..0000000000 --- a/.changeset/heavy-cameras-provide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-app-api': patch ---- - -Updated the default error handling middleware to filter out certain known error types that should never be returned in responses. The errors are instead logged along with a correlation ID, which is also returned in the response. Initially only PostgreSQL protocol errors from the `pg-protocol` package are filtered out. diff --git a/.changeset/heavy-coats-sniff.md b/.changeset/heavy-coats-sniff.md new file mode 100644 index 0000000000..c503ec0dec --- /dev/null +++ b/.changeset/heavy-coats-sniff.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-jenkins-backend': minor +--- + +**BREAKING**: Both `createRouter` and `DefaultJenkinsInfoProvider.fromConfig` now require the `discovery` service to be forwarded from the plugin environment. This is part of the migration to support new auth services. + +The `JenkinsInfoProvider` interface has been updated to receive `credentials` of the type `BackstageCredentials` rather than a token. diff --git a/.changeset/hip-ears-add.md b/.changeset/hip-ears-add.md deleted file mode 100644 index 1e7f656507..0000000000 --- a/.changeset/hip-ears-add.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -The auth backend will now refuse to issue user tokens are excessively large. diff --git a/.changeset/hot-horses-matter.md b/.changeset/hot-horses-matter.md deleted file mode 100644 index 1b544c0854..0000000000 --- a/.changeset/hot-horses-matter.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch -'@backstage/plugin-search-backend-module-stack-overflow-collator': patch -'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch -'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch -'@backstage/plugin-events-backend-module-bitbucket-cloud': patch -'@backstage/plugin-tech-insights-backend-module-jsonfc': patch -'@backstage/plugin-catalog-backend-module-unprocessed': patch -'@backstage/plugin-analytics-module-newrelic-browser': patch -'@backstage/plugin-scaffolder-backend-module-gitlab': patch -'@backstage/plugin-scaffolder-backend-module-sentry': patch -'@backstage/plugin-scaffolder-backend-module-yeoman': patch -'@backstage/plugin-catalog-backend-module-puppetdb': patch -'@backstage/plugin-scaffolder-backend-module-rails': patch -'@backstage/plugin-api-docs-module-protoc-gen-doc': patch -'@backstage/plugin-catalog-backend-module-msgraph': patch -'@backstage/plugin-catalog-backend-module-openapi': patch -'@backstage/plugin-search-backend-module-techdocs': patch -'@backstage/plugin-events-backend-module-aws-sqs': patch -'@backstage/plugin-search-backend-module-catalog': patch -'@backstage/plugin-search-backend-module-explore': patch -'@backstage/plugin-catalog-unprocessed-entities': 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-module-azure': patch -'@backstage/plugin-entity-feedback-backend': patch -'@backstage/plugin-code-coverage-backend': patch -'@backstage/plugin-tech-insights-backend': patch -'@backstage/plugin-analytics-module-ga4': patch -'@backstage/plugin-azure-devops-backend': patch -'@backstage/backend-plugin-api': patch -'@backstage/plugin-analytics-module-ga': patch -'@backstage/plugin-azure-sites-backend': patch -'@backstage/backend-dev-utils': patch -'@backstage/plugin-github-deployments': patch -'@backstage/plugin-lighthouse-backend': patch -'@backstage/plugin-microsoft-calendar': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/backend-defaults': patch -'@backstage/plugin-entity-validation': patch -'@backstage/plugin-sonarqube-backend': patch -'@backstage/backend-app-api': patch -'@backstage/plugin-devtools-backend': patch -'@backstage/plugin-linguist-backend': patch -'@backstage/plugin-playlist-backend': patch -'@backstage/backend-common': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-explore-backend': patch -'@backstage/plugin-graphql-voyager': patch -'@backstage/plugin-jenkins-backend': patch -'@backstage/plugin-rollbar-backend': patch -'@backstage/backend-tasks': patch -'@backstage/plugin-badges-backend': patch -'@backstage/plugin-bazaar-backend': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-events-backend': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-octopus-deploy': patch -'@backstage/plugin-splunk-on-call': patch -'@backstage/plugin-techdocs-react': patch -'@backstage/app-defaults': patch -'@backstage/core-app-api': patch -'@backstage/plugin-catalog-graph': patch -'@backstage/plugin-code-coverage': patch -'@backstage/plugin-cost-insights': patch -'@backstage/plugin-nomad-backend': patch -'@backstage/plugin-tech-insights': patch -'@backstage/plugin-vault-backend': patch -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-code-climate': patch -'@backstage/plugin-adr-backend': patch -'@backstage/plugin-app-backend': patch -'@backstage/plugin-azure-sites': patch -'@backstage/plugin-firehydrant': patch -'@backstage/plugin-lighthouse': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-tech-radar': patch -'@backstage/plugin-codescene': patch -'@backstage/plugin-dynatrace': patch -'@backstage/plugin-shortcuts': patch -'@backstage/plugin-sonarqube': patch -'@backstage/plugin-xcmetrics': patch -'@backstage/plugin-airbrake': patch -'@backstage/plugin-api-docs': patch -'@backstage/plugin-circleci': patch -'@backstage/plugin-devtools': patch -'@backstage/plugin-graphiql': patch -'@backstage/plugin-linguist': patch -'@backstage/plugin-newrelic': patch -'@backstage/plugin-opencost': patch -'@backstage/plugin-periskop': patch -'@backstage/plugin-bitrise': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-jenkins': patch -'@backstage/plugin-rollbar': patch -'@backstage/plugin-allure': patch -'@backstage/plugin-badges': patch -'@backstage/plugin-bazaar': patch -'@backstage/plugin-sentry': patch -'@backstage/plugin-fossa': patch -'@backstage/plugin-ilert': patch -'@backstage/plugin-nomad': patch -'@backstage/plugin-vault': patch -'@backstage/plugin-home': patch ---- - -Use `--cwd` as the first `yarn` argument diff --git a/.changeset/hot-paws-tap.md b/.changeset/hot-paws-tap.md deleted file mode 100644 index 30d8b396ba..0000000000 --- a/.changeset/hot-paws-tap.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/catalog-model': patch -'@backstage/test-utils': patch -'@backstage/plugin-explore': patch ---- - -Fix wording in API reference diff --git a/.changeset/hot-pillows-poke.md b/.changeset/hot-pillows-poke.md deleted file mode 100644 index 8060e7121f..0000000000 --- a/.changeset/hot-pillows-poke.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-user-settings': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-tech-radar': patch -'@backstage/plugin-graphiql': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-search': patch ---- - -Use `convertLegacyRouteRefs` to define routes in `/alpha` export plugin. diff --git a/.changeset/hot-tips-doubt.md b/.changeset/hot-tips-doubt.md deleted file mode 100644 index 464ddec302..0000000000 --- a/.changeset/hot-tips-doubt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-openapi-utils': patch ---- - -Internal updates due to `json-schema-to-ts` diff --git a/.changeset/hungry-days-remain.md b/.changeset/hungry-days-remain.md deleted file mode 100644 index b0c3642a35..0000000000 --- a/.changeset/hungry-days-remain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/theme': patch ---- - -Fixed missing extra variables like `applyDarkStyles` in Mui V5 theme after calling `createUnifiedThemeFromV4` function diff --git a/.changeset/hungry-lions-sit.md b/.changeset/hungry-lions-sit.md deleted file mode 100644 index b283cc976f..0000000000 --- a/.changeset/hungry-lions-sit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-gitlab': patch ---- - -Use the Gitbeaker library for `gitlab:projectAccessToken:create` action, enabling the `expiresAt` option diff --git a/.changeset/hungry-points-burn.md b/.changeset/hungry-points-burn.md new file mode 100644 index 0000000000..c0dabf0446 --- /dev/null +++ b/.changeset/hungry-points-burn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Added 'root' and 'label' class keys for EntityAutocompletePicker, EntityOwnerPicker and EntityProcessingStatusPicker diff --git a/.changeset/itchy-bikes-heal.md b/.changeset/itchy-bikes-heal.md new file mode 100644 index 0000000000..c058e32e02 --- /dev/null +++ b/.changeset/itchy-bikes-heal.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Fix prettier issues on default plugins & module templates diff --git a/.changeset/itchy-news-drive.md b/.changeset/itchy-news-drive.md new file mode 100644 index 0000000000..97cca5b155 --- /dev/null +++ b/.changeset/itchy-news-drive.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-azure-devops-backend': minor +'@backstage/plugin-azure-devops-common': minor +'@backstage/plugin-azure-devops': minor +--- + +Ability to fetch the README file from a different Azure DevOps path. + +Defaults to the current, Azure DevOps default behaviour (`README.md` in the root of the git repo); to use a different path, add the annotation `dev.azure.com/readme-path` + +Example: + +```yaml +dev.azure.com/readme-path: /my-path/README.md +``` diff --git a/.changeset/khaki-seahorses-joke.md b/.changeset/khaki-seahorses-joke.md deleted file mode 100644 index 9382d6f108..0000000000 --- a/.changeset/khaki-seahorses-joke.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/integration-aws-node': patch -'@backstage/integration': patch ---- - -All single-line secrets read from config will now have both leading and trailing whitespace trimmed. This is done to ensure that the secrets are always valid HTTP header values, since many fetch implementations will include the header value itself when an error is thrown due to invalid header values. diff --git a/.changeset/kind-clouds-fly.md b/.changeset/kind-clouds-fly.md deleted file mode 100644 index 22aa7cda33..0000000000 --- a/.changeset/kind-clouds-fly.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes-node': patch ---- - -Enabled a way to include custom auth metadata info on the clusters endpoint. If you want to implement a Kubernetes auth strategy which requires surfacing custom auth metadata to the frontend, use the new presentAuthMetadata method on the AuthenticationStrategy interface. diff --git a/.changeset/good-lemons-lick.md b/.changeset/kind-pants-speak.md similarity index 56% rename from .changeset/good-lemons-lick.md rename to .changeset/kind-pants-speak.md index 3fde0c7d84..215cd5fadc 100644 --- a/.changeset/good-lemons-lick.md +++ b/.changeset/kind-pants-speak.md @@ -1,5 +1,7 @@ --- '@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch '@backstage/plugin-scaffolder-backend-module-cookiecutter': patch '@backstage/plugin-scaffolder-backend-module-bitbucket': patch '@backstage/plugin-scaffolder-backend-module-gerrit': patch @@ -8,7 +10,12 @@ '@backstage/plugin-scaffolder-backend-module-sentry': patch '@backstage/plugin-scaffolder-backend-module-yeoman': patch '@backstage/plugin-scaffolder-backend-module-azure': patch +'@backstage/plugin-scaffolder-backend-module-gitea': patch '@backstage/plugin-scaffolder-backend-module-rails': patch +'@backstage/plugin-scaffolder-node-test-utils': minor +'@backstage/plugin-scaffolder-backend': patch --- -Exporting a default module for the new Backend System +Introduced `createMockActionContext` to unify the way of creating scaffolder mock context. + +It will help to maintain tests in a long run during structural changes of action context. diff --git a/.changeset/kind-shrimps-yell.md b/.changeset/kind-shrimps-yell.md new file mode 100644 index 0000000000..b2ca801c17 --- /dev/null +++ b/.changeset/kind-shrimps-yell.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-guest-provider': patch +--- + +Ensure that the config schema is present diff --git a/.changeset/kind-students-cross.md b/.changeset/kind-students-cross.md new file mode 100644 index 0000000000..9f9d2d40a6 --- /dev/null +++ b/.changeset/kind-students-cross.md @@ -0,0 +1,76 @@ +--- +'@backstage/plugin-events-backend-module-bitbucket-cloud': minor +'@backstage/plugin-events-backend-module-gerrit': minor +'@backstage/plugin-events-backend-module-github': minor +'@backstage/plugin-events-backend-module-gitlab': minor +'@backstage/plugin-events-backend-module-azure': minor +'@backstage/plugin-events-node': minor +--- + +BREAKING CHANGE: Migrate `EventRouter` implementations from `EventBroker` to `EventsService`. + +`EventRouter` uses the new `EventsService` instead of the `EventBroker` now, +causing a breaking change to its signature. + +All of its extensions and implementations got adjusted accordingly. +(`SubTopicEventRouter`, `AzureDevOpsEventRouter`, `BitbucketCloudEventRouter`, +`GerritEventRouter`, `GithubEventRouter`, `GitlabEventRouter`) + +Required adjustments were made to all backend modules for the new backend system, +now also making use of the `eventsServiceRef` instead of the `eventsExtensionPoint`. + +**Migration:** + +Example for implementations of `SubTopicEventRouter`: + +```diff + import { + EventParams, ++ EventsService, + SubTopicEventRouter, + } from '@backstage/plugin-events-node'; + + export class GithubEventRouter extends SubTopicEventRouter { +- constructor() { +- super('github'); ++ constructor(options: { events: EventsService }) { ++ super({ ++ events: options.events, ++ topic: 'github', ++ }); + } + ++ protected getSubscriberId(): string { ++ return 'GithubEventRouter'; ++ } ++ + // ... + } +``` + +Example for a direct extension of `EventRouter`: + +```diff + class MyEventRouter extends EventRouter { +- constructor(/* ... */) { ++ constructor(options: { ++ events: EventsService; ++ // ... ++ }) { +- super(); + // ... ++ super({ ++ events: options.events, ++ topics: topics, ++ }); + } ++ ++ protected getSubscriberId(): string { ++ return 'MyEventRouter'; ++ } +- +- supportsEventTopics(): string[] { +- return this.topics; +- } + } +``` diff --git a/.changeset/kind-wombats-draw.md b/.changeset/kind-wombats-draw.md deleted file mode 100644 index 29a0e9da3c..0000000000 --- a/.changeset/kind-wombats-draw.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/core-plugin-api': minor -'@backstage/app-defaults': minor -'@backstage/core-app-api': minor -'@backstage/frontend-plugin-api': patch ---- - -Added a utility API for VMware Cloud auth; the API ref is available in the -`@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the -implementation is in `@backstage/core-app-api` and a factory has been added to -`@backstage/app-defaults`. diff --git a/.changeset/large-candles-sniff.md b/.changeset/large-candles-sniff.md new file mode 100644 index 0000000000..3b62d212ba --- /dev/null +++ b/.changeset/large-candles-sniff.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Fixed an issue where configuration schema for the purpose of redacting secrets from logs was not being read correctly. diff --git a/.changeset/large-frogs-grab.md b/.changeset/large-frogs-grab.md deleted file mode 100644 index 2d36de3407..0000000000 --- a/.changeset/large-frogs-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-api-docs': patch ---- - -Adding `supportedSubmitMethods` prop to `api-docs` to pass to the Swagger UI. This allows users to specify which HTTP methods they wish to allow end-users to make requests through the `Try It Out` button on the Swagger UI. diff --git a/.changeset/large-moons-speak.md b/.changeset/large-moons-speak.md deleted file mode 100644 index efd94c5df3..0000000000 --- a/.changeset/large-moons-speak.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/catalog-client': minor -'@backstage/plugin-catalog-backend': minor ---- - -Add API to get location by entity diff --git a/.changeset/large-tables-wonder.md b/.changeset/large-tables-wonder.md deleted file mode 100644 index 9c10f172a1..0000000000 --- a/.changeset/large-tables-wonder.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Add experimental support for an optional `public` app entry point that lets users sign-in before being able to access the full app. diff --git a/.changeset/late-poets-love.md b/.changeset/late-poets-love.md deleted file mode 100644 index 03b975b2b5..0000000000 --- a/.changeset/late-poets-love.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-app-api': patch ---- - -Allow the `createConfigSecretEnumerator` to take an optional `schema` argument with an already-loaded global configuration schema. diff --git a/.changeset/late-turkeys-remember.md b/.changeset/late-turkeys-remember.md new file mode 100644 index 0000000000..0640797b9f --- /dev/null +++ b/.changeset/late-turkeys-remember.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-common': patch +--- + +The `token` option of the `PermissionEvaluator` methods is now deprecated. The options that only apply to backend implementations have been moved to `PermissionsService` from `@backstage/backend-plugin-api` instead. diff --git a/.changeset/lazy-dolls-roll.md b/.changeset/lazy-dolls-roll.md deleted file mode 100644 index da375727cc..0000000000 --- a/.changeset/lazy-dolls-roll.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-tasks': patch ---- - -The `TaskScheduler.fromConfig` method now accepts the `LegacyRootDatabaseService` interface rather than the full `DatabaseManager` implementation. diff --git a/.changeset/lazy-needles-lick.md b/.changeset/lazy-needles-lick.md new file mode 100644 index 0000000000..990348cf5d --- /dev/null +++ b/.changeset/lazy-needles-lick.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Fix issue where `resolveSafeChildPath` path would incorrectly resolve when operating on a symlink diff --git a/.changeset/lazy-terms-shake.md b/.changeset/lazy-terms-shake.md new file mode 100644 index 0000000000..efe89f1c12 --- /dev/null +++ b/.changeset/lazy-terms-shake.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-linguist': patch +--- + +Get component's title from translation file. See: https://backstage.io/docs/plugins/internationalization#for-an-application-developer-overwrite-plugin-messages diff --git a/.changeset/lemon-cameras-remember.md b/.changeset/lemon-cameras-remember.md deleted file mode 100644 index 29cd88602f..0000000000 --- a/.changeset/lemon-cameras-remember.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Migrated oidc auth provider to new `@backstage/plugin-auth-backend-module-oidc-provider` module package. diff --git a/.changeset/lemon-lemons-sparkle.md b/.changeset/lemon-lemons-sparkle.md new file mode 100644 index 0000000000..6aae1a7f8d --- /dev/null +++ b/.changeset/lemon-lemons-sparkle.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +The entity page extension provided by the `/alpha` plugin now correctly renders the entity 404 page. diff --git a/.changeset/long-emus-talk.md b/.changeset/long-emus-talk.md new file mode 100644 index 0000000000..ac8d5cbc68 --- /dev/null +++ b/.changeset/long-emus-talk.md @@ -0,0 +1,32 @@ +--- +'@backstage/plugin-events-backend-module-aws-sqs': minor +--- + +BREAKING CHANGE: Migrate `AwsSqsConsumingEventPublisher` and its backend module to use `EventsService`. + +Uses the `EventsService` instead of `EventBroker` at `AwsSqsConsumingEventPublisher`, +dropping the use of `EventPublisher` including `setEventBroker(..)`. + +Now, `AwsSqsConsumingEventPublisher.fromConfig` requires `events: EventsService` as option. + +```diff + const sqs = AwsSqsConsumingEventPublisher.fromConfig({ + config: env.config, ++ events: env.events, + logger: env.logger, + scheduler: env.scheduler, + }); ++ await Promise.all(sqs.map(publisher => publisher.start())); + + // e.g. at packages/backend/src/plugins/events.ts +- await new EventsBackend(env.logger) +- .setEventBroker(env.eventBroker) +- .addPublishers(sqs) +- .start(); + + // or for other kinds of setups +- await Promise.all(sqs.map(publisher => publisher.setEventBroker(eventBroker))); +``` + +`eventsModuleAwsSqsConsumingEventPublisher` uses the `eventsServiceRef` as dependency, +instead of `eventsExtensionPoint`. diff --git a/.changeset/long-stingrays-look.md b/.changeset/long-stingrays-look.md deleted file mode 100644 index f1df12169e..0000000000 --- a/.changeset/long-stingrays-look.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': minor ---- - -Updated the paginated catalog table to support server side text filtering. diff --git a/.changeset/long-suns-bow.md b/.changeset/long-suns-bow.md deleted file mode 100644 index 81fafa8dae..0000000000 --- a/.changeset/long-suns-bow.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': minor -'@backstage/plugin-search-backend': minor -'@backstage/plugin-todo-backend': patch ---- - -Updates the OpenAPI spec to use plugin as `info.title` instead of package name. diff --git a/.changeset/long-wasps-wait.md b/.changeset/long-wasps-wait.md deleted file mode 100644 index f027fb97ce..0000000000 --- a/.changeset/long-wasps-wait.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/config-loader': patch ---- - -Make schema processing gracefully handle an empty config. diff --git a/.changeset/loud-dolls-exist.md b/.changeset/loud-dolls-exist.md new file mode 100644 index 0000000000..5dce8d71f2 --- /dev/null +++ b/.changeset/loud-dolls-exist.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Added the `UserInfoApi` as both an optional input and as an output for `createLegacyAuthAdapters` diff --git a/.changeset/loud-walls-compare.md b/.changeset/loud-walls-compare.md deleted file mode 100644 index 495ad933d9..0000000000 --- a/.changeset/loud-walls-compare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': patch ---- - -Fixed inconsistencies in icons used for System and Template diff --git a/.changeset/lovely-bugs-prove.md b/.changeset/lovely-bugs-prove.md deleted file mode 100644 index de55f329bb..0000000000 --- a/.changeset/lovely-bugs-prove.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -'@backstage/repo-tools': minor ---- - -**BREAKING**: The `schema openapi *` commands are now renamed into `package schema openapi *` and `repo schema openapi *`. The aim is to make it more clear what the command is operating on, the entire repo or just a single package. - -The following commands now live under the `package` namespace, - -- `schema openapi generate` is now `package schema openapi generate --server` -- `schema openapi generate-client` is now `package schema openapi generate --client-package` -- `schema openapi init` is now `package schema openapi init` - -And these commands live under the new `repo` namespace, - -- `schema openapi lint` is now `repo schema openapi lint` -- `schema openapi test` is now `repo schema openapi test` -- `schema openapi verify` is now `repo schema openapi verify` - -The `package schema openapi generate` now supports defining both `--server` and `--client-package` to generate both at once.This update also reworks the `--client-package` flag to accept only an output directory as the input directory can now be inferred. diff --git a/.changeset/lovely-donkeys-kneel.md b/.changeset/lovely-donkeys-kneel.md new file mode 100644 index 0000000000..e6c45c59fa --- /dev/null +++ b/.changeset/lovely-donkeys-kneel.md @@ -0,0 +1,13 @@ +--- +'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch +'@backstage/plugin-auth-backend-module-vmware-cloud-provider': patch +'@backstage/plugin-auth-backend-module-microsoft-provider': patch +'@backstage/plugin-auth-backend-module-pinniped-provider': patch +'@backstage/plugin-auth-backend-module-aws-alb-provider': patch +'@backstage/plugin-auth-backend-module-oidc-provider': patch +'@backstage/backend-common': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-auth-node': patch +--- + +Bump dependency `jose` to v5 diff --git a/.changeset/lovely-starfishes-remain.md b/.changeset/lovely-starfishes-remain.md deleted file mode 100644 index c57bfa0aaa..0000000000 --- a/.changeset/lovely-starfishes-remain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -Removed alpha symbol from Task List header diff --git a/.changeset/lucky-bugs-bow.md b/.changeset/lucky-bugs-bow.md deleted file mode 100644 index ee17883408..0000000000 --- a/.changeset/lucky-bugs-bow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Add a seed file for `yarn.lock` in newly created apps. This file is downloaded directly from `https://github.com/backstage/backstage` at the time of creating a new project, ensuring that users always receive the latest version. The purpose of the seed file is to initialize the lock file with known good versions of individual dependencies that have had bad new releases published. The seed file will have no effect if the dependency is not present, it can not be used to install additional packages. diff --git a/.changeset/many-pugs-change.md b/.changeset/many-pugs-change.md deleted file mode 100644 index 318c571891..0000000000 --- a/.changeset/many-pugs-change.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -The purpose of this patch is to add a new login method which is `googleServiceAccount` configuring the kubernetes properties in the app-config.yaml file with authProvider key diff --git a/.changeset/mean-apes-wait.md b/.changeset/mean-apes-wait.md deleted file mode 100644 index 838f1f2286..0000000000 --- a/.changeset/mean-apes-wait.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': patch ---- - -Added `validateLocationsExist` to the config diff --git a/.changeset/metal-clocks-suffer.md b/.changeset/metal-clocks-suffer.md deleted file mode 100644 index c459be9fa5..0000000000 --- a/.changeset/metal-clocks-suffer.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-gitea': minor -'@backstage/plugin-scaffolder-backend': minor ---- - -Created a gitea module for the scaffolder. This module provides a new action "publish:gitea" able to create a gitea repository owned by an organization. See: https://gitea.com/api/swagger#/organization/createOrgRepo diff --git a/.changeset/metal-elephants-sit.md b/.changeset/metal-elephants-sit.md deleted file mode 100644 index 093936da3b..0000000000 --- a/.changeset/metal-elephants-sit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': minor ---- - -Introduced a new `MultiEntityPicker` field that supports selecting multiple Entities diff --git a/.changeset/metal-students-drive.md b/.changeset/metal-students-drive.md deleted file mode 100644 index 04f338c64e..0000000000 --- a/.changeset/metal-students-drive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-entity-validation': patch ---- - -Improves UX of the EntityValidationPage: Moves the validate button below the EntityTextArea which is actually validated, the location TextField can now be hidden to prevent confusion about what is validated and additional content can be added to the top of the validation page. diff --git a/.changeset/mighty-steaks-shave.md b/.changeset/mighty-steaks-shave.md deleted file mode 100644 index b85447e5c0..0000000000 --- a/.changeset/mighty-steaks-shave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Bumped TypeScript to version `5.3`. diff --git a/.changeset/mighty-tomatoes-visit.md b/.changeset/mighty-tomatoes-visit.md deleted file mode 100644 index beb37d02ed..0000000000 --- a/.changeset/mighty-tomatoes-visit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -adds a x-goog-api-client header to existing API requests in this plugin to clearly identify API requests from this GKE plugin. headers are formatted as follows where `libVersion` represents the current dotted version number of the Backstage GKE plugin and `libName` represent the current Google API used at backstage. diff --git a/.changeset/mighty-toys-laugh.md b/.changeset/mighty-toys-laugh.md deleted file mode 100644 index ad48e84565..0000000000 --- a/.changeset/mighty-toys-laugh.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-react': minor ---- - -Add support to `configSchema` option on the `createEntityCardExtension` factory function. diff --git a/.changeset/modern-impalas-add.md b/.changeset/modern-impalas-add.md new file mode 100644 index 0000000000..8964e07fea --- /dev/null +++ b/.changeset/modern-impalas-add.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Removed the inline color from select icon to allow it to be colored via a theme diff --git a/.changeset/modern-peaches-clean.md b/.changeset/modern-peaches-clean.md deleted file mode 100644 index 13dbb75183..0000000000 --- a/.changeset/modern-peaches-clean.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Updated the default app index template at `packages/app/public/index.html` to have a fallback value for the `app.title` config. diff --git a/.changeset/nasty-days-jog.md b/.changeset/nasty-days-jog.md deleted file mode 100644 index 09454609b2..0000000000 --- a/.changeset/nasty-days-jog.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-aws-alb-provider': patch ---- - -Refactored to use the `jose` library for JWT handling. diff --git a/.changeset/nasty-shirts-look.md b/.changeset/nasty-shirts-look.md deleted file mode 100644 index 32213ee219..0000000000 --- a/.changeset/nasty-shirts-look.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-home': patch ---- - -Use EntityDisplayName JSX element entity information directly for FeaturedDocsCard. diff --git a/.changeset/nasty-suns-speak.md b/.changeset/nasty-suns-speak.md deleted file mode 100644 index 2c5fff25a1..0000000000 --- a/.changeset/nasty-suns-speak.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/repo-tools': patch ---- - -Add an internal limiter on concurrency when launching processes diff --git a/.changeset/neat-eels-greet.md b/.changeset/neat-eels-greet.md deleted file mode 100644 index 5ba4777934..0000000000 --- a/.changeset/neat-eels-greet.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-graph': minor ---- - -Migrate plugin to the new frontend system, it is experimental and available via alpha subpath. diff --git a/.changeset/neat-hotels-wink.md b/.changeset/neat-hotels-wink.md deleted file mode 100644 index fca82e38fa..0000000000 --- a/.changeset/neat-hotels-wink.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-gitlab': patch ---- - -Added the option to provide custom `groupTransformer`, `userTransformer` and `groupNameTransformer` to allow custom transformations of groups and users diff --git a/.changeset/neat-kiwis-joke.md b/.changeset/neat-kiwis-joke.md deleted file mode 100644 index 852ec1d430..0000000000 --- a/.changeset/neat-kiwis-joke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Add a User-Agent header for calls towards Google Cloud Storage. diff --git a/.changeset/neat-owls-pump.md b/.changeset/neat-owls-pump.md new file mode 100644 index 0000000000..ca34d12756 --- /dev/null +++ b/.changeset/neat-owls-pump.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Updated the `permissionsServiceFactory` to forward the `AuthService` to the implementation. diff --git a/.changeset/nervous-lions-suffer.md b/.changeset/nervous-lions-suffer.md new file mode 100644 index 0000000000..b3a0400c26 --- /dev/null +++ b/.changeset/nervous-lions-suffer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +Document the new frontend system extensions for the org plugin. diff --git a/.changeset/new-plants-rhyme.md b/.changeset/new-plants-rhyme.md deleted file mode 100644 index c901754069..0000000000 --- a/.changeset/new-plants-rhyme.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Responses from the `/api/kubernetes/services/:serviceId` endpoint now include the cluster title. diff --git a/.changeset/nice-beans-wait.md b/.changeset/nice-beans-wait.md new file mode 100644 index 0000000000..7cbdbc0fdf --- /dev/null +++ b/.changeset/nice-beans-wait.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-search-backend-module-techdocs': patch +'@backstage/plugin-search-backend-module-catalog': patch +'@backstage/plugin-search-backend-module-explore': patch +--- + +Migrated to support new auth services. diff --git a/.changeset/nice-carrots-dream.md b/.changeset/nice-carrots-dream.md deleted file mode 100644 index 3b57dfd9e0..0000000000 --- a/.changeset/nice-carrots-dream.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': patch ---- - -Decreased number of teams fetched by GraphQL Query responsible for fetching Teams and Members in organization, due to timeouts when running against big organizations diff --git a/.changeset/nine-bulldogs-camp.md b/.changeset/nine-bulldogs-camp.md deleted file mode 100644 index b6612b9948..0000000000 --- a/.changeset/nine-bulldogs-camp.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/catalog-client': minor -'@backstage/plugin-catalog-backend': minor -'@backstage/plugin-search-backend': minor -'@backstage/plugin-todo-backend': patch ---- - -Updates the OpenAPI specification title to plugin ID instead of package name. diff --git a/.changeset/nine-olives-swim.md b/.changeset/nine-olives-swim.md deleted file mode 100644 index 40852c08c2..0000000000 --- a/.changeset/nine-olives-swim.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-node': minor ---- - -Added functions to clone a repo, create a branch, add files and push and commit to the branch. This allows for files to be added to the a PR for use in the bitbucket pull request action for issue #21762 diff --git a/.changeset/ninety-hats-kiss.md b/.changeset/ninety-hats-kiss.md deleted file mode 100644 index ff5ec770f7..0000000000 --- a/.changeset/ninety-hats-kiss.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-playlist': patch ---- - -Conditionally render playlist description only when it's non-empty diff --git a/.changeset/ninety-rules-sneeze.md b/.changeset/ninety-rules-sneeze.md deleted file mode 100644 index bea9d00f7e..0000000000 --- a/.changeset/ninety-rules-sneeze.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Minor performance improvement for `queryEntities` when the limit is 0. diff --git a/.changeset/odd-beds-confess.md b/.changeset/odd-beds-confess.md deleted file mode 100644 index 5a766beb9d..0000000000 --- a/.changeset/odd-beds-confess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Replace uses of deprecated types with replacements internally. diff --git a/.changeset/odd-toys-wonder.md b/.changeset/odd-toys-wonder.md new file mode 100644 index 0000000000..aedd915c6e --- /dev/null +++ b/.changeset/odd-toys-wonder.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-common': patch +--- + +Deprecate `QueryTranslator`, `QueryRequestOptions` and `SearchEngine` in favor of the types exported from `@backstage/plugin-search-backend-node`. diff --git a/.changeset/old-ducks-fetch.md b/.changeset/old-ducks-fetch.md new file mode 100644 index 0000000000..0e719d07e1 --- /dev/null +++ b/.changeset/old-ducks-fetch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search': patch +--- + +Removes ADR from the default set of search filters diff --git a/.changeset/old-papayas-shave.md b/.changeset/old-papayas-shave.md deleted file mode 100644 index 1372b9ce85..0000000000 --- a/.changeset/old-papayas-shave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-app-api': patch ---- - -Wrap the root element with the analytics context to ensure it always exists for all extensions. diff --git a/.changeset/old-students-smoke.md b/.changeset/old-students-smoke.md deleted file mode 100644 index 8e072c5203..0000000000 --- a/.changeset/old-students-smoke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-oidc-provider': minor ---- - -Created new `@backstage/plugin-auth-backend-module-oidc-provider` module package to house oidc auth provider migration. diff --git a/.changeset/olive-boats-agree.md b/.changeset/olive-boats-agree.md deleted file mode 100644 index e489476bcc..0000000000 --- a/.changeset/olive-boats-agree.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -'@backstage/core-app-api': patch -'@backstage/core-components': patch -'@backstage/core-plugin-api': patch -'@backstage/dev-utils': patch -'@backstage/frontend-app-api': patch -'@backstage/frontend-plugin-api': patch -'@backstage/plugin-adr': patch -'@backstage/plugin-airbrake': patch -'@backstage/plugin-allure': patch -'@backstage/plugin-apache-airflow': patch -'@backstage/plugin-api-docs-module-protoc-gen-doc': patch -'@backstage/plugin-api-docs': patch -'@backstage/plugin-apollo-explorer': patch -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-azure-sites': patch -'@backstage/plugin-badges': patch -'@backstage/plugin-bazaar': patch -'@backstage/plugin-bitrise': patch -'@backstage/plugin-catalog-graph': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-catalog-unprocessed-entities': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-circleci': patch -'@backstage/plugin-cloudbuild': patch -'@backstage/plugin-code-climate': patch -'@backstage/plugin-code-coverage': patch -'@backstage/plugin-codescene': patch -'@backstage/plugin-config-schema': patch -'@backstage/plugin-cost-insights': patch -'@backstage/plugin-devtools': patch -'@backstage/plugin-dynatrace': patch -'@backstage/plugin-entity-feedback': patch -'@backstage/plugin-entity-validation': patch -'@backstage/plugin-explore': patch -'@backstage/plugin-firehydrant': patch -'@backstage/plugin-fossa': patch -'@backstage/plugin-gcalendar': patch -'@backstage/plugin-git-release-manager': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-github-deployments': patch -'@backstage/plugin-github-issues': patch -'@backstage/plugin-github-pull-requests-board': patch -'@backstage/plugin-gitops-profiles': patch -'@backstage/plugin-graphiql': patch -'@backstage/plugin-graphql-voyager': patch -'@backstage/plugin-home': patch -'@backstage/plugin-ilert': patch -'@backstage/plugin-jenkins': patch -'@backstage/plugin-kafka': patch -'@backstage/plugin-kubernetes-cluster': patch -'@backstage/plugin-kubernetes-react': patch -'@backstage/plugin-kubernetes': patch -'@backstage/plugin-lighthouse': patch -'@backstage/plugin-linguist': patch -'@backstage/plugin-microsoft-calendar': patch -'@backstage/plugin-newrelic-dashboard': patch -'@backstage/plugin-newrelic': patch -'@backstage/plugin-nomad': patch -'@backstage/plugin-octopus-deploy': patch -'@backstage/plugin-opencost': patch -'@backstage/plugin-org-react': patch -'@backstage/plugin-org': patch -'@backstage/plugin-pagerduty': patch -'@backstage/plugin-periskop': patch -'@backstage/plugin-permission-react': patch -'@backstage/plugin-playlist': patch -'@backstage/plugin-puppetdb': patch -'@backstage/plugin-rollbar': patch -'@backstage/plugin-scaffolder-react': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-search-react': patch -'@backstage/plugin-search': patch -'@backstage/plugin-sentry': patch -'@backstage/plugin-shortcuts': patch -'@backstage/plugin-sonarqube': patch -'@backstage/plugin-splunk-on-call': patch -'@backstage/plugin-stack-overflow': patch -'@backstage/plugin-stackstorm': patch -'@backstage/plugin-tech-insights': patch -'@backstage/plugin-tech-radar': patch -'@backstage/plugin-techdocs-addons-test-utils': patch -'@backstage/plugin-techdocs-react': patch -'@backstage/plugin-techdocs': patch -'@backstage/plugin-user-settings': patch -'@backstage/plugin-vault': patch -'@backstage/plugin-xcmetrics': patch -'@backstage/test-utils': patch -'@backstage/theme': patch ---- - -Widen `@types/react` dependency range to include version 18. diff --git a/.changeset/olive-experts-fold.md b/.changeset/olive-experts-fold.md deleted file mode 100644 index 29b9bfc28f..0000000000 --- a/.changeset/olive-experts-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Rollback the change for wildcard discovery, this fixes a bug with the `AzureUrlReader` not working with wildcard paths diff --git a/.changeset/olive-mails-tell.md b/.changeset/olive-mails-tell.md new file mode 100644 index 0000000000..5f82656679 --- /dev/null +++ b/.changeset/olive-mails-tell.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-devtools': patch +'@backstage/plugin-linguist': patch +--- + +Updated to use `fetchApi` as per [ADR013](https://backstage.io/docs/architecture-decisions/adrs-adr013) diff --git a/.changeset/olive-singers-accept.md b/.changeset/olive-singers-accept.md deleted file mode 100644 index 7e8cf7ae8d..0000000000 --- a/.changeset/olive-singers-accept.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-compat-api': patch ---- - -Added `convertLegacyRouteRefs` for bulk conversion of plugin routes. diff --git a/.changeset/orange-gorillas-clean.md b/.changeset/orange-gorillas-clean.md deleted file mode 100644 index d346adce6c..0000000000 --- a/.changeset/orange-gorillas-clean.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend': patch -'@backstage/plugin-tech-insights-node': patch ---- - -Move `FactRetrieverRegistry` and `PersistenceContext` to `@backstage/plugin-tech-insights-node`. - -Original exports are marked as deprecated and re-export the moved types. - -Please replace uses like - -```ts -import { - FactRetrieverRegistry, - PersistenceContext, -} from '@backstage/plugin-tech-insights-backend'; -``` - -with - -```ts -import { - FactRetrieverRegistry, - PersistenceContext, -} from '@backstage/plugin-tech-insights-node'; -``` diff --git a/.changeset/orange-suns-yell.md b/.changeset/orange-suns-yell.md deleted file mode 100644 index f7314411eb..0000000000 --- a/.changeset/orange-suns-yell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': minor ---- - -Add entity warning components to the default entity overview page. diff --git a/.changeset/orange-walls-complain.md b/.changeset/orange-walls-complain.md deleted file mode 100644 index 477d42d913..0000000000 --- a/.changeset/orange-walls-complain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': patch ---- - -Add line clamping to `CatalogSearchResultListItem` diff --git a/.changeset/perfect-colts-hammer.md b/.changeset/perfect-colts-hammer.md deleted file mode 100644 index 616bcbda6f..0000000000 --- a/.changeset/perfect-colts-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Organized imports in plugin.ts diff --git a/.changeset/perfect-shoes-arrive.md b/.changeset/perfect-shoes-arrive.md new file mode 100644 index 0000000000..93862df24d --- /dev/null +++ b/.changeset/perfect-shoes-arrive.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-entity-feedback': patch +--- + +Remove empty Chip in `FeedbackResponseTable.tsx` when there is no response, and fix typo in Feedback Dialog Box. diff --git a/.changeset/perfect-taxis-give.md b/.changeset/perfect-taxis-give.md new file mode 100644 index 0000000000..540834c5c5 --- /dev/null +++ b/.changeset/perfect-taxis-give.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-defaults': patch +--- + +Added support for the new auth services, which are now installed by default. See the [migration guide](https://backstage.io/docs/tutorials/auth-service-migration) for details. diff --git a/.changeset/polite-meals-hug.md b/.changeset/polite-meals-hug.md deleted file mode 100644 index 664f450c6d..0000000000 --- a/.changeset/polite-meals-hug.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-stack-overflow': patch ---- - -Fixes a bug that made the API return questions not related to the tags provided diff --git a/.changeset/polite-tips-begin.md b/.changeset/polite-tips-begin.md new file mode 100644 index 0000000000..a1211c91a6 --- /dev/null +++ b/.changeset/polite-tips-begin.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-plugin-api': patch +--- + +Updated the `PermissionsService` methods to accept `BackstageCredentials` through options. diff --git a/.changeset/polite-zoos-pay.md b/.changeset/polite-zoos-pay.md new file mode 100644 index 0000000000..9596d1356c --- /dev/null +++ b/.changeset/polite-zoos-pay.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend': minor +'@backstage/plugin-catalog-node': minor +--- + +Allow setting EntityDataParser using CatalogModelExtensionPoint diff --git a/.changeset/poor-beans-cross.md b/.changeset/poor-beans-cross.md new file mode 100644 index 0000000000..34c473a545 --- /dev/null +++ b/.changeset/poor-beans-cross.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-radar': patch +--- + +Fixed an issue with the "moved in direction" table header cell getting squished and becoming unreadable if a timeline description is too long diff --git a/.changeset/poor-jeans-rescue.md b/.changeset/poor-jeans-rescue.md deleted file mode 100644 index e44b9c6bc6..0000000000 --- a/.changeset/poor-jeans-rescue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Make `http://localhost:3000` the default base URL for serving locally, and `/` the default public path for built apps. The app build no longer requires any configuration values to be present. diff --git a/.changeset/poor-ladybugs-smell.md b/.changeset/poor-ladybugs-smell.md new file mode 100644 index 0000000000..bcd67d2426 --- /dev/null +++ b/.changeset/poor-ladybugs-smell.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Removed unused `replace-in-file` dependency diff --git a/.changeset/poor-points-do.md b/.changeset/poor-points-do.md deleted file mode 100644 index 198ef24c83..0000000000 --- a/.changeset/poor-points-do.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-scaffolder-entity-model': patch -'@backstage/plugin-search-backend-module-stack-overflow-collator': patch -'@backstage/plugin-permission-backend-module-allow-all-policy': patch -'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch -'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch -'@backstage/plugin-auth-backend-module-vmware-cloud-provider': patch -'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch -'@backstage/plugin-catalog-backend-module-backstage-openapi': patch -'@backstage/plugin-auth-backend-module-atlassian-provider': patch -'@backstage/plugin-auth-backend-module-microsoft-provider': patch -'@backstage/plugin-auth-backend-module-pinniped-provider': patch -'@backstage/plugin-auth-backend-module-github-provider': patch -'@backstage/plugin-auth-backend-module-gitlab-provider': patch -'@backstage/plugin-auth-backend-module-oauth2-provider': patch -'@backstage/plugin-scaffolder-backend-module-bitbucket': patch -'@backstage/plugin-analytics-module-newrelic-browser': patch -'@backstage/plugin-auth-backend-module-oidc-provider': patch -'@backstage/plugin-auth-backend-module-okta-provider': patch -'@backstage/plugin-catalog-backend-module-github-org': patch -'@backstage/backend-dynamic-feature-service': patch -'@backstage/plugin-scaffolder-backend-module-gerrit': patch -'@backstage/plugin-scaffolder-backend-module-github': patch -'@backstage/plugin-scaffolder-backend-module-azure': patch -'@backstage/plugin-notifications-backend': patch -'@backstage/frontend-test-utils': patch -'@backstage/plugin-analytics-module-ga4': patch -'@backstage/plugin-notifications-common': patch -'@backstage/plugin-notifications-node': patch -'@backstage/frontend-app-api': patch -'@backstage/plugin-kubernetes-react': patch -'@backstage/e2e-test-utils': patch -'@backstage/plugin-kubernetes-node': patch -'@backstage/plugin-signals-backend': patch -'@backstage/plugin-app-visualizer': patch -'@backstage/plugin-notifications': patch -'@backstage/plugin-signals-react': patch -'@backstage/plugin-vault-backend': patch -'@backstage/plugin-signals-node': patch -'@backstage/plugin-vault-node': patch -'@backstage/plugin-app-node': patch -'@backstage/plugin-opencost': patch -'@backstage/plugin-signals': patch ---- - -Added or fixed the `repository` field in `package.json`. diff --git a/.changeset/pre.json b/.changeset/pre.json index 80baf3d416..6b08809e2a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,507 +1,387 @@ { - "mode": "exit", + "mode": "pre", "tag": "next", "initialVersions": { - "example-app": "0.2.91", - "@backstage/app-defaults": "1.4.7", - "example-app-next": "0.0.5", - "app-next-example-plugin": "0.0.5", - "example-backend": "0.2.91", - "@backstage/backend-app-api": "0.5.10", - "@backstage/backend-common": "0.20.1", - "@backstage/backend-defaults": "0.2.9", - "@backstage/backend-dev-utils": "0.1.3", - "@backstage/backend-dynamic-feature-service": "0.1.0", - "example-backend-next": "0.0.19", - "@backstage/backend-openapi-utils": "0.1.2", - "@backstage/backend-plugin-api": "0.6.9", - "@backstage/backend-tasks": "0.5.14", - "@backstage/backend-test-utils": "0.2.10", - "@backstage/catalog-client": "1.5.2", - "@backstage/catalog-model": "1.4.3", - "@backstage/cli": "0.25.1", + "example-app": "0.2.92", + "@backstage/app-defaults": "1.5.0", + "example-app-next": "0.0.6", + "app-next-example-plugin": "0.0.6", + "example-backend": "0.2.92", + "@backstage/backend-app-api": "0.5.11", + "@backstage/backend-common": "0.21.0", + "@backstage/backend-defaults": "0.2.10", + "@backstage/backend-dev-utils": "0.1.4", + "@backstage/backend-dynamic-feature-service": "0.2.0", + "example-backend-next": "0.0.20", + "@backstage/backend-openapi-utils": "0.1.3", + "@backstage/backend-plugin-api": "0.6.10", + "@backstage/backend-tasks": "0.5.15", + "@backstage/backend-test-utils": "0.3.0", + "@backstage/catalog-client": "1.6.0", + "@backstage/catalog-model": "1.4.4", + "@backstage/cli": "0.25.2", "@backstage/cli-common": "0.1.13", - "@backstage/cli-node": "0.2.2", - "@backstage/codemods": "0.1.46", + "@backstage/cli-node": "0.2.3", + "@backstage/codemods": "0.1.47", "@backstage/config": "1.1.1", - "@backstage/config-loader": "1.6.1", - "@backstage/core-app-api": "1.11.3", - "@backstage/core-compat-api": "0.1.1", - "@backstage/core-components": "0.13.10", - "@backstage/core-plugin-api": "1.8.2", - "@backstage/create-app": "0.5.9", - "@backstage/dev-utils": "1.0.26", - "e2e-test": "0.2.11", - "@backstage/e2e-test-utils": "0.1.0", + "@backstage/config-loader": "1.6.2", + "@backstage/core-app-api": "1.12.0", + "@backstage/core-compat-api": "0.2.0", + "@backstage/core-components": "0.14.0", + "@backstage/core-plugin-api": "1.9.0", + "@backstage/create-app": "0.5.11", + "@backstage/dev-utils": "1.0.27", + "e2e-test": "0.2.12", + "@backstage/e2e-test-utils": "0.1.1", "@backstage/errors": "1.2.3", - "@backstage/eslint-plugin": "0.1.4", - "@backstage/frontend-app-api": "0.5.0", - "@backstage/frontend-plugin-api": "0.5.0", - "@backstage/frontend-test-utils": "0.1.1", - "@backstage/integration": "1.8.0", - "@backstage/integration-aws-node": "0.1.8", - "@backstage/integration-react": "1.1.23", + "@backstage/eslint-plugin": "0.1.5", + "@backstage/frontend-app-api": "0.6.0", + "@backstage/frontend-plugin-api": "0.6.0", + "@backstage/frontend-test-utils": "0.1.2", + "@backstage/integration": "1.9.0", + "@backstage/integration-aws-node": "0.1.9", + "@backstage/integration-react": "1.1.24", "@backstage/release-manifests": "0.0.11", - "@backstage/repo-tools": "0.5.2", - "@techdocs/cli": "1.8.1", - "techdocs-cli-embedded-app": "0.2.90", - "@backstage/test-utils": "1.4.7", - "@backstage/theme": "0.5.0", + "@backstage/repo-tools": "0.6.0", + "@techdocs/cli": "1.8.2", + "techdocs-cli-embedded-app": "0.2.91", + "@backstage/test-utils": "1.5.0", + "@backstage/theme": "0.5.1", "@backstage/types": "1.1.1", "@backstage/version-bridge": "1.0.7", - "@backstage/plugin-adr": "0.6.12", - "@backstage/plugin-adr-backend": "0.4.6", - "@backstage/plugin-adr-common": "0.2.19", - "@backstage/plugin-airbrake": "0.3.29", - "@backstage/plugin-airbrake-backend": "0.3.6", - "@backstage/plugin-allure": "0.1.45", - "@backstage/plugin-analytics-module-ga": "0.1.37", - "@backstage/plugin-analytics-module-ga4": "0.1.8", - "@backstage/plugin-analytics-module-newrelic-browser": "0.0.6", - "@backstage/plugin-apache-airflow": "0.2.19", - "@backstage/plugin-api-docs": "0.10.3", - "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.5", - "@backstage/plugin-apollo-explorer": "0.1.19", - "@backstage/plugin-app-backend": "0.3.57", - "@backstage/plugin-app-node": "0.1.9", - "@backstage/plugin-app-visualizer": "0.1.0", - "@backstage/plugin-auth-backend": "0.20.3", - "@backstage/plugin-auth-backend-module-atlassian-provider": "0.1.1", - "@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.2.3", - "@backstage/plugin-auth-backend-module-github-provider": "0.1.6", - "@backstage/plugin-auth-backend-module-gitlab-provider": "0.1.6", - "@backstage/plugin-auth-backend-module-google-provider": "0.1.6", - "@backstage/plugin-auth-backend-module-microsoft-provider": "0.1.4", - "@backstage/plugin-auth-backend-module-oauth2-provider": "0.1.6", - "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.1.1", - "@backstage/plugin-auth-backend-module-okta-provider": "0.0.2", - "@backstage/plugin-auth-backend-module-pinniped-provider": "0.1.3", - "@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.1.1", - "@backstage/plugin-auth-node": "0.4.3", - "@backstage/plugin-azure-devops": "0.3.11", - "@backstage/plugin-azure-devops-backend": "0.5.1", + "@backstage/plugin-adr": "0.6.13", + "@backstage/plugin-adr-backend": "0.4.7", + "@backstage/plugin-adr-common": "0.2.20", + "@backstage/plugin-airbrake": "0.3.30", + "@backstage/plugin-airbrake-backend": "0.3.7", + "@backstage/plugin-allure": "0.1.46", + "@backstage/plugin-analytics-module-ga": "0.2.0", + "@backstage/plugin-analytics-module-ga4": "0.2.0", + "@backstage/plugin-analytics-module-newrelic-browser": "0.1.0", + "@backstage/plugin-apache-airflow": "0.2.20", + "@backstage/plugin-api-docs": "0.11.0", + "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.6", + "@backstage/plugin-apollo-explorer": "0.1.20", + "@backstage/plugin-app-backend": "0.3.58", + "@backstage/plugin-app-node": "0.1.10", + "@backstage/plugin-app-visualizer": "0.1.1", + "@backstage/plugin-auth-backend": "0.21.0", + "@backstage/plugin-auth-backend-module-atlassian-provider": "0.1.2", + "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.1.0", + "@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.2.4", + "@backstage/plugin-auth-backend-module-github-provider": "0.1.7", + "@backstage/plugin-auth-backend-module-gitlab-provider": "0.1.7", + "@backstage/plugin-auth-backend-module-google-provider": "0.1.7", + "@backstage/plugin-auth-backend-module-microsoft-provider": "0.1.5", + "@backstage/plugin-auth-backend-module-oauth2-provider": "0.1.7", + "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.1.2", + "@backstage/plugin-auth-backend-module-oidc-provider": "0.1.0", + "@backstage/plugin-auth-backend-module-okta-provider": "0.0.3", + "@backstage/plugin-auth-backend-module-pinniped-provider": "0.1.4", + "@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.1.2", + "@backstage/plugin-auth-node": "0.4.4", + "@backstage/plugin-azure-devops": "0.3.12", + "@backstage/plugin-azure-devops-backend": "0.5.2", "@backstage/plugin-azure-devops-common": "0.3.2", - "@backstage/plugin-azure-sites": "0.1.18", - "@backstage/plugin-azure-sites-backend": "0.1.19", - "@backstage/plugin-azure-sites-common": "0.1.1", - "@backstage/plugin-badges": "0.2.53", - "@backstage/plugin-badges-backend": "0.3.6", - "@backstage/plugin-bazaar": "0.2.21", - "@backstage/plugin-bazaar-backend": "0.3.7", - "@backstage/plugin-bitbucket-cloud-common": "0.2.15", - "@backstage/plugin-bitrise": "0.1.56", - "@backstage/plugin-catalog": "1.16.1", - "@backstage/plugin-catalog-backend": "1.16.1", - "@backstage/plugin-catalog-backend-module-aws": "0.3.3", - "@backstage/plugin-catalog-backend-module-azure": "0.1.28", - "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.1.2", - "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.24", - "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.24", - "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.22", - "@backstage/plugin-catalog-backend-module-gcp": "0.1.9", - "@backstage/plugin-catalog-backend-module-gerrit": "0.1.25", - "@backstage/plugin-catalog-backend-module-github": "0.4.7", - "@backstage/plugin-catalog-backend-module-github-org": "0.1.3", - "@backstage/plugin-catalog-backend-module-gitlab": "0.3.6", - "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.4.13", - "@backstage/plugin-catalog-backend-module-ldap": "0.5.24", - "@backstage/plugin-catalog-backend-module-msgraph": "0.5.16", - "@backstage/plugin-catalog-backend-module-openapi": "0.1.26", - "@backstage/plugin-catalog-backend-module-puppetdb": "0.1.14", - "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.1.6", - "@backstage/plugin-catalog-backend-module-unprocessed": "0.3.6", - "@backstage/plugin-catalog-common": "1.0.20", - "@backstage/plugin-catalog-graph": "0.3.3", - "@backstage/plugin-catalog-import": "0.10.5", - "@backstage/plugin-catalog-node": "1.6.1", - "@backstage/plugin-catalog-react": "1.9.3", - "@backstage/plugin-catalog-unprocessed-entities": "0.1.7", - "@backstage/plugin-cicd-statistics": "0.1.31", - "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.25", - "@backstage/plugin-circleci": "0.3.29", - "@backstage/plugin-cloudbuild": "0.3.29", - "@backstage/plugin-code-climate": "0.1.29", - "@backstage/plugin-code-coverage": "0.2.22", - "@backstage/plugin-code-coverage-backend": "0.2.23", - "@backstage/plugin-codescene": "0.1.21", - "@backstage/plugin-config-schema": "0.1.49", - "@backstage/plugin-cost-insights": "0.12.18", + "@backstage/plugin-azure-sites": "0.1.19", + "@backstage/plugin-azure-sites-backend": "0.2.0", + "@backstage/plugin-azure-sites-common": "0.1.2", + "@backstage/plugin-badges": "0.2.54", + "@backstage/plugin-badges-backend": "0.3.7", + "@backstage/plugin-bazaar": "0.2.22", + "@backstage/plugin-bazaar-backend": "0.3.8", + "@backstage/plugin-bitbucket-cloud-common": "0.2.16", + "@backstage/plugin-bitrise": "0.1.57", + "@backstage/plugin-catalog": "1.17.0", + "@backstage/plugin-catalog-backend": "1.17.0", + "@backstage/plugin-catalog-backend-module-aws": "0.3.4", + "@backstage/plugin-catalog-backend-module-azure": "0.1.29", + "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.1.3", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.25", + "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.23", + "@backstage/plugin-catalog-backend-module-gcp": "0.1.10", + "@backstage/plugin-catalog-backend-module-gerrit": "0.1.26", + "@backstage/plugin-catalog-backend-module-github": "0.5.0", + "@backstage/plugin-catalog-backend-module-github-org": "0.1.4", + "@backstage/plugin-catalog-backend-module-gitlab": "0.3.7", + "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.4.14", + "@backstage/plugin-catalog-backend-module-ldap": "0.5.25", + "@backstage/plugin-catalog-backend-module-msgraph": "0.5.17", + "@backstage/plugin-catalog-backend-module-openapi": "0.1.27", + "@backstage/plugin-catalog-backend-module-puppetdb": "0.1.15", + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.1.7", + "@backstage/plugin-catalog-backend-module-unprocessed": "0.3.7", + "@backstage/plugin-catalog-common": "1.0.21", + "@backstage/plugin-catalog-graph": "0.4.0", + "@backstage/plugin-catalog-import": "0.10.6", + "@backstage/plugin-catalog-node": "1.7.0", + "@backstage/plugin-catalog-react": "1.10.0", + "@backstage/plugin-catalog-unprocessed-entities": "0.1.8", + "@backstage/plugin-cicd-statistics": "0.1.32", + "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.26", + "@backstage/plugin-circleci": "0.3.30", + "@backstage/plugin-cloudbuild": "0.4.0", + "@backstage/plugin-code-climate": "0.1.30", + "@backstage/plugin-code-coverage": "0.2.23", + "@backstage/plugin-code-coverage-backend": "0.2.24", + "@backstage/plugin-codescene": "0.1.22", + "@backstage/plugin-config-schema": "0.1.50", + "@backstage/plugin-cost-insights": "0.12.19", "@backstage/plugin-cost-insights-common": "0.1.2", - "@backstage/plugin-devtools": "0.1.8", - "@backstage/plugin-devtools-backend": "0.2.6", + "@backstage/plugin-devtools": "0.1.9", + "@backstage/plugin-devtools-backend": "0.2.7", "@backstage/plugin-devtools-common": "0.1.8", - "@backstage/plugin-dynatrace": "8.0.3", - "@backstage/plugin-entity-feedback": "0.2.12", - "@backstage/plugin-entity-feedback-backend": "0.2.6", + "@backstage/plugin-dynatrace": "9.0.0", + "@backstage/plugin-entity-feedback": "0.2.13", + "@backstage/plugin-entity-feedback-backend": "0.2.7", "@backstage/plugin-entity-feedback-common": "0.1.3", - "@backstage/plugin-entity-validation": "0.1.14", - "@backstage/plugin-events-backend": "0.2.18", - "@backstage/plugin-events-backend-module-aws-sqs": "0.2.12", - "@backstage/plugin-events-backend-module-azure": "0.1.19", - "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.19", - "@backstage/plugin-events-backend-module-gerrit": "0.1.19", - "@backstage/plugin-events-backend-module-github": "0.1.19", - "@backstage/plugin-events-backend-module-gitlab": "0.1.19", - "@backstage/plugin-events-backend-test-utils": "0.1.19", - "@backstage/plugin-events-node": "0.2.18", - "@internal/plugin-todo-list": "1.0.21", - "@internal/plugin-todo-list-backend": "1.0.21", + "@backstage/plugin-entity-validation": "0.1.15", + "@backstage/plugin-events-backend": "0.2.19", + "@backstage/plugin-events-backend-module-aws-sqs": "0.2.13", + "@backstage/plugin-events-backend-module-azure": "0.1.20", + "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.20", + "@backstage/plugin-events-backend-module-gerrit": "0.1.20", + "@backstage/plugin-events-backend-module-github": "0.1.20", + "@backstage/plugin-events-backend-module-gitlab": "0.1.20", + "@backstage/plugin-events-backend-test-utils": "0.1.20", + "@backstage/plugin-events-node": "0.2.19", + "@internal/plugin-todo-list": "1.0.22", + "@internal/plugin-todo-list-backend": "1.0.22", "@internal/plugin-todo-list-common": "1.0.17", - "@backstage/plugin-explore": "0.4.15", - "@backstage/plugin-explore-backend": "0.0.19", + "@backstage/plugin-explore": "0.4.16", + "@backstage/plugin-explore-backend": "0.0.20", "@backstage/plugin-explore-common": "0.0.2", - "@backstage/plugin-explore-react": "0.0.35", - "@backstage/plugin-firehydrant": "0.2.13", - "@backstage/plugin-fossa": "0.2.61", - "@backstage/plugin-gcalendar": "0.3.22", - "@backstage/plugin-gcp-projects": "0.3.45", - "@backstage/plugin-git-release-manager": "0.3.41", - "@backstage/plugin-github-actions": "0.6.10", - "@backstage/plugin-github-deployments": "0.1.60", - "@backstage/plugin-github-issues": "0.2.18", - "@backstage/plugin-github-pull-requests-board": "0.1.23", - "@backstage/plugin-gitops-profiles": "0.3.44", - "@backstage/plugin-gocd": "0.1.35", - "@backstage/plugin-graphiql": "0.3.2", - "@backstage/plugin-graphql-voyager": "0.1.11", - "@backstage/plugin-home": "0.6.1", - "@backstage/plugin-home-react": "0.1.7", - "@backstage/plugin-ilert": "0.2.18", - "@backstage/plugin-jenkins": "0.9.4", - "@backstage/plugin-jenkins-backend": "0.3.3", - "@backstage/plugin-jenkins-common": "0.1.23", - "@backstage/plugin-kafka": "0.3.29", - "@backstage/plugin-kafka-backend": "0.3.7", - "@backstage/plugin-kubernetes": "0.11.4", - "@backstage/plugin-kubernetes-backend": "0.14.1", - "@backstage/plugin-kubernetes-cluster": "0.0.5", - "@backstage/plugin-kubernetes-common": "0.7.3", - "@backstage/plugin-kubernetes-node": "0.1.3", - "@backstage/plugin-kubernetes-react": "0.2.1", - "@backstage/plugin-lighthouse": "0.4.14", - "@backstage/plugin-lighthouse-backend": "0.4.1", + "@backstage/plugin-explore-react": "0.0.36", + "@backstage/plugin-firehydrant": "0.2.14", + "@backstage/plugin-fossa": "0.2.62", + "@backstage/plugin-gcalendar": "0.3.23", + "@backstage/plugin-gcp-projects": "0.3.46", + "@backstage/plugin-git-release-manager": "0.3.42", + "@backstage/plugin-github-actions": "0.6.11", + "@backstage/plugin-github-deployments": "0.1.61", + "@backstage/plugin-github-issues": "0.2.19", + "@backstage/plugin-github-pull-requests-board": "0.1.24", + "@backstage/plugin-gitops-profiles": "0.3.45", + "@backstage/plugin-gocd": "0.1.36", + "@backstage/plugin-graphiql": "0.3.3", + "@backstage/plugin-graphql-voyager": "0.1.12", + "@backstage/plugin-home": "0.6.2", + "@backstage/plugin-home-react": "0.1.8", + "@backstage/plugin-ilert": "0.2.19", + "@backstage/plugin-jenkins": "0.9.5", + "@backstage/plugin-jenkins-backend": "0.3.4", + "@backstage/plugin-jenkins-common": "0.1.24", + "@backstage/plugin-kafka": "0.3.30", + "@backstage/plugin-kafka-backend": "0.3.8", + "@backstage/plugin-kubernetes": "0.11.5", + "@backstage/plugin-kubernetes-backend": "0.15.0", + "@backstage/plugin-kubernetes-cluster": "0.0.6", + "@backstage/plugin-kubernetes-common": "0.7.4", + "@backstage/plugin-kubernetes-node": "0.1.4", + "@backstage/plugin-kubernetes-react": "0.3.0", + "@backstage/plugin-lighthouse": "0.4.15", + "@backstage/plugin-lighthouse-backend": "0.4.2", "@backstage/plugin-lighthouse-common": "0.1.4", - "@backstage/plugin-linguist": "0.1.14", - "@backstage/plugin-linguist-backend": "0.5.6", + "@backstage/plugin-linguist": "0.1.15", + "@backstage/plugin-linguist-backend": "0.5.7", "@backstage/plugin-linguist-common": "0.1.2", - "@backstage/plugin-microsoft-calendar": "0.1.11", - "@backstage/plugin-newrelic": "0.3.44", - "@backstage/plugin-newrelic-dashboard": "0.3.4", - "@backstage/plugin-nomad": "0.1.10", - "@backstage/plugin-nomad-backend": "0.1.11", - "@backstage/plugin-octopus-deploy": "0.2.11", - "@backstage/plugin-opencost": "0.2.4", - "@backstage/plugin-org": "0.6.19", - "@backstage/plugin-org-react": "0.1.18", - "@backstage/plugin-pagerduty": "0.7.1", - "@backstage/plugin-periskop": "0.1.27", - "@backstage/plugin-periskop-backend": "0.2.7", - "@backstage/plugin-permission-backend": "0.5.32", - "@backstage/plugin-permission-backend-module-allow-all-policy": "0.1.6", + "@backstage/plugin-microsoft-calendar": "0.1.12", + "@backstage/plugin-newrelic": "0.3.45", + "@backstage/plugin-newrelic-dashboard": "0.3.5", + "@backstage/plugin-nomad": "0.1.11", + "@backstage/plugin-nomad-backend": "0.1.12", + "@backstage/plugin-notifications": "0.0.1", + "@backstage/plugin-notifications-backend": "0.0.1", + "@backstage/plugin-notifications-common": "0.0.1", + "@backstage/plugin-notifications-node": "0.0.1", + "@backstage/plugin-octopus-deploy": "0.2.12", + "@backstage/plugin-opencost": "0.2.5", + "@backstage/plugin-org": "0.6.20", + "@backstage/plugin-org-react": "0.1.19", + "@backstage/plugin-pagerduty": "0.7.2", + "@backstage/plugin-periskop": "0.1.28", + "@backstage/plugin-periskop-backend": "0.2.8", + "@backstage/plugin-permission-backend": "0.5.33", + "@backstage/plugin-permission-backend-module-allow-all-policy": "0.1.7", "@backstage/plugin-permission-common": "0.7.12", - "@backstage/plugin-permission-node": "0.7.20", - "@backstage/plugin-permission-react": "0.4.19", - "@backstage/plugin-playlist": "0.2.3", - "@backstage/plugin-playlist-backend": "0.3.13", + "@backstage/plugin-permission-node": "0.7.21", + "@backstage/plugin-permission-react": "0.4.20", + "@backstage/plugin-playlist": "0.2.4", + "@backstage/plugin-playlist-backend": "0.3.14", "@backstage/plugin-playlist-common": "0.1.14", - "@backstage/plugin-proxy-backend": "0.4.7", - "@backstage/plugin-puppetdb": "0.1.12", - "@backstage/plugin-rollbar": "0.4.29", - "@backstage/plugin-rollbar-backend": "0.1.54", - "@backstage/plugin-scaffolder": "1.17.1", - "@backstage/plugin-scaffolder-backend": "1.20.0", - "@backstage/plugin-scaffolder-backend-module-azure": "0.1.1", - "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.1.1", - "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.2.10", - "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.33", - "@backstage/plugin-scaffolder-backend-module-gerrit": "0.1.1", - "@backstage/plugin-scaffolder-backend-module-github": "0.1.1", - "@backstage/plugin-scaffolder-backend-module-gitlab": "0.2.12", - "@backstage/plugin-scaffolder-backend-module-rails": "0.4.26", - "@backstage/plugin-scaffolder-backend-module-sentry": "0.1.17", - "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.30", - "@backstage/plugin-scaffolder-common": "1.4.5", - "@backstage/plugin-scaffolder-node": "0.2.10", - "@backstage/plugin-scaffolder-react": "1.7.1", - "@backstage/plugin-search": "1.4.5", - "@backstage/plugin-search-backend": "1.4.9", - "@backstage/plugin-search-backend-module-catalog": "0.1.13", - "@backstage/plugin-search-backend-module-elasticsearch": "1.3.12", - "@backstage/plugin-search-backend-module-explore": "0.1.13", - "@backstage/plugin-search-backend-module-pg": "0.5.18", - "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.1.2", - "@backstage/plugin-search-backend-module-techdocs": "0.1.13", - "@backstage/plugin-search-backend-node": "1.2.13", + "@backstage/plugin-proxy-backend": "0.4.8", + "@backstage/plugin-puppetdb": "0.1.13", + "@backstage/plugin-rollbar": "0.4.30", + "@backstage/plugin-rollbar-backend": "0.1.55", + "@backstage/plugin-scaffolder": "1.18.0", + "@backstage/plugin-scaffolder-backend": "1.21.0", + "@backstage/plugin-scaffolder-backend-module-azure": "0.1.2", + "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.2.0", + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.1.0", + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.1.0", + "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.2.11", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.34", + "@backstage/plugin-scaffolder-backend-module-gerrit": "0.1.2", + "@backstage/plugin-scaffolder-backend-module-gitea": "0.1.0", + "@backstage/plugin-scaffolder-backend-module-github": "0.2.0", + "@backstage/plugin-scaffolder-backend-module-gitlab": "0.2.13", + "@backstage/plugin-scaffolder-backend-module-rails": "0.4.27", + "@backstage/plugin-scaffolder-backend-module-sentry": "0.1.18", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.31", + "@backstage/plugin-scaffolder-common": "1.5.0", + "@backstage/plugin-scaffolder-node": "0.3.0", + "@backstage/plugin-scaffolder-react": "1.8.0", + "@backstage/plugin-search": "1.4.6", + "@backstage/plugin-search-backend": "1.5.0", + "@backstage/plugin-search-backend-module-catalog": "0.1.14", + "@backstage/plugin-search-backend-module-elasticsearch": "1.3.13", + "@backstage/plugin-search-backend-module-explore": "0.1.14", + "@backstage/plugin-search-backend-module-pg": "0.5.19", + "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.1.3", + "@backstage/plugin-search-backend-module-techdocs": "0.1.14", + "@backstage/plugin-search-backend-node": "1.2.14", "@backstage/plugin-search-common": "1.2.10", - "@backstage/plugin-search-react": "1.7.5", - "@backstage/plugin-sentry": "0.5.14", - "@backstage/plugin-shortcuts": "0.3.18", - "@backstage/plugin-sonarqube": "0.7.11", - "@backstage/plugin-sonarqube-backend": "0.2.11", - "@backstage/plugin-sonarqube-react": "0.1.12", - "@backstage/plugin-splunk-on-call": "0.4.18", - "@backstage/plugin-stack-overflow": "0.1.24", - "@backstage/plugin-stack-overflow-backend": "0.2.13", - "@backstage/plugin-stackstorm": "0.1.10", - "@backstage/plugin-tech-insights": "0.3.21", - "@backstage/plugin-tech-insights-backend": "0.5.23", - "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.41", + "@backstage/plugin-search-react": "1.7.6", + "@backstage/plugin-sentry": "0.5.15", + "@backstage/plugin-shortcuts": "0.3.19", + "@backstage/plugin-signals": "0.0.1", + "@backstage/plugin-signals-backend": "0.0.1", + "@backstage/plugin-signals-node": "0.0.1", + "@backstage/plugin-signals-react": "0.0.1", + "@backstage/plugin-sonarqube": "0.7.12", + "@backstage/plugin-sonarqube-backend": "0.2.12", + "@backstage/plugin-sonarqube-react": "0.1.13", + "@backstage/plugin-splunk-on-call": "0.4.19", + "@backstage/plugin-stack-overflow": "0.1.25", + "@backstage/plugin-stack-overflow-backend": "0.2.14", + "@backstage/plugin-stackstorm": "0.1.11", + "@backstage/plugin-tech-insights": "0.3.22", + "@backstage/plugin-tech-insights-backend": "0.5.24", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.42", "@backstage/plugin-tech-insights-common": "0.2.12", - "@backstage/plugin-tech-insights-node": "0.4.15", - "@backstage/plugin-tech-radar": "0.6.12", - "@backstage/plugin-techdocs": "1.9.3", - "@backstage/plugin-techdocs-addons-test-utils": "1.0.26", - "@backstage/plugin-techdocs-backend": "1.9.2", - "@backstage/plugin-techdocs-module-addons-contrib": "1.1.4", - "@backstage/plugin-techdocs-node": "1.11.1", - "@backstage/plugin-techdocs-react": "1.1.15", - "@backstage/plugin-todo": "0.2.33", - "@backstage/plugin-todo-backend": "0.3.7", - "@backstage/plugin-user-settings": "0.8.0", - "@backstage/plugin-user-settings-backend": "0.2.8", - "@backstage/plugin-vault": "0.1.24", - "@backstage/plugin-vault-backend": "0.4.2", - "@backstage/plugin-vault-node": "0.1.2", - "@backstage/plugin-xcmetrics": "0.2.47", - "@backstage/plugin-auth-backend-module-oidc-provider": "0.0.0", - "@backstage/plugin-signals": "0.0.0", - "@backstage/plugin-signals-backend": "0.0.0", - "@backstage/plugin-signals-node": "0.0.0", - "@backstage/plugin-signals-react": "0.0.0", - "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.0.0", - "@backstage/plugin-notifications": "0.0.0", - "@backstage/plugin-notifications-backend": "0.0.0", - "@backstage/plugin-notifications-common": "0.0.0", - "@backstage/plugin-notifications-node": "0.0.0", - "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.0.0", - "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.0.0" + "@backstage/plugin-tech-insights-node": "0.4.16", + "@backstage/plugin-tech-radar": "0.6.13", + "@backstage/plugin-techdocs": "1.10.0", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.27", + "@backstage/plugin-techdocs-backend": "1.9.3", + "@backstage/plugin-techdocs-module-addons-contrib": "1.1.5", + "@backstage/plugin-techdocs-node": "1.11.2", + "@backstage/plugin-techdocs-react": "1.1.16", + "@backstage/plugin-todo": "0.2.34", + "@backstage/plugin-todo-backend": "0.3.8", + "@backstage/plugin-user-settings": "0.8.1", + "@backstage/plugin-user-settings-backend": "0.2.9", + "@backstage/plugin-vault": "0.1.25", + "@backstage/plugin-vault-backend": "0.4.3", + "@backstage/plugin-vault-node": "0.1.3", + "@backstage/plugin-xcmetrics": "0.2.48", + "@backstage/plugin-auth-backend-module-guest-provider": "0.0.0", + "@backstage/plugin-scaffolder-node-test-utils": "0.0.1" }, "changesets": [ - "afraid-numbers-invite", - "angry-phones-arrive", - "beige-apples-press", - "blue-keys-do", - "brave-jobs-invite", - "breezy-cobras-sin", - "brown-items-hammer", - "brown-peaches-hunt", - "calm-cups-rule", - "calm-items-double", - "calm-onions-exercise", - "chilled-chefs-notice", - "chilled-ways-wave", - "chilly-seahorses-bake", - "cold-cheetahs-pull", - "cold-cooks-care", - "cool-islands-impress", - "cool-walls-applaud", - "create-app-1706621803", - "curvy-icons-peel", - "curvy-ladybugs-impress", - "cyan-bats-lick", - "cyan-ducks-sin", - "cyan-icons-rest", - "dirty-cheetahs-shave", - "dirty-mirrors-retire", - "dirty-plums-fix", - "dry-lizards-taste", - "dry-lobsters-flash", - "dry-vans-kiss", - "dull-dolphins-explain", - "dull-fireants-repeat", - "eight-hounds-dream", - "eight-pumas-rule", - "eleven-walls-relate", - "empty-ligers-hang", - "fair-mirrors-hammer", - "famous-houses-thank", - "fast-jeans-walk", - "fast-onions-own", - "fifty-adults-watch", - "fifty-files-argue", - "flat-roses-happen", - "flat-wasps-fold", - "fluffy-jeans-eat", - "forty-beers-sniff", - "forty-cars-scream", - "forty-eagles-kick", - "four-mugs-try", - "four-walls-perform", - "fresh-gifts-smile", - "fresh-paws-raise", - "friendly-cheetahs-rescue", - "friendly-terms-love", - "funny-buttons-sip", - "funny-timers-visit", - "fuzzy-comics-collect", - "fuzzy-turtles-camp", - "giant-suits-switch", - "good-lemons-lick", - "gorgeous-bobcats-press", - "gorgeous-pumas-draw", - "gorgeous-ways-applaud", - "great-rats-collect", - "green-dogs-fold", - "green-flies-draw", - "grumpy-poets-study", - "happy-peas-hunt", - "healthy-bees-deliver", - "healthy-goats-jump", - "hip-ears-add", - "hot-horses-matter", - "hot-paws-tap", - "hot-pillows-poke", - "hot-tips-doubt", - "hungry-days-remain", - "hungry-lions-sit", - "khaki-seahorses-joke", - "kind-clouds-fly", - "kind-wombats-draw", - "large-frogs-grab", - "large-moons-speak", - "large-tables-wonder", - "late-poets-love", - "lazy-dolls-roll", - "lemon-cameras-remember", - "long-suns-bow", - "long-wasps-wait", - "loud-walls-compare", - "lovely-bugs-prove", - "lovely-starfishes-remain", - "lucky-bugs-bow", - "many-pugs-change", - "mean-apes-wait", - "metal-elephants-sit", - "metal-students-drive", - "mighty-steaks-shave", - "mighty-tomatoes-visit", - "mighty-toys-laugh", - "modern-peaches-clean", - "nasty-days-jog", - "nasty-shirts-look", - "neat-eels-greet", - "neat-hotels-wink", - "neat-kiwis-joke", - "new-plants-rhyme", - "nice-carrots-dream", - "nine-bulldogs-camp", - "nine-olives-swim", - "ninety-hats-kiss", - "ninety-rules-sneeze", - "old-papayas-shave", - "old-students-smoke", - "olive-boats-agree", - "olive-experts-fold", - "olive-singers-accept", - "orange-gorillas-clean", - "orange-suns-yell", - "orange-walls-complain", - "perfect-colts-hammer", - "polite-meals-hug", - "poor-jeans-rescue", - "poor-points-do", - "quick-gifts-leave", - "quick-penguins-refuse", - "quick-ties-stare", - "quiet-donkeys-punch", - "rare-seals-thank", - "real-eggs-sip", - "real-grapes-sing", - "red-bottles-swim", - "red-eggs-serve", - "renovate-235713b", - "renovate-2d87790", - "renovate-47c1714", - "renovate-4b698fb", - "renovate-5f8d1ca", - "renovate-95b717a", - "renovate-97e6aa5", - "renovate-b35b354", - "renovate-c392808", - "renovate-d7337c1", - "renovate-f253121", - "renovate-f4b1d70", - "renovate-f58dd5c", - "renovate-f92a114", - "renovate-fb2e0b9", - "rich-bees-fry", - "rotten-lemons-cry", - "selfish-mails-scream", - "serious-carpets-learn", - "serious-dryers-grin", - "seven-dots-serve", - "seven-plums-return", - "shaggy-trainers-rule", - "shaggy-windows-cross", - "sharp-pandas-hunt", - "shiny-apes-glow", - "shiny-clocks-greet", - "shiny-poets-tease", - "short-cherries-mix", - "shy-carrots-decide", - "silent-hotels-knock", - "silent-poets-grab", - "silent-waves-pretend", - "silver-crabs-exercise", - "six-emus-buy", - "six-jobs-sin", - "six-melons-end", - "sixty-bags-fry", - "sixty-shoes-prove", - "slimy-rats-fly", - "smart-numbers-call", - "soft-balloons-relax", - "soft-beans-tease", - "sour-ligers-hunt", - "sour-rivers-fry", - "spicy-bobcats-return", - "spotty-jokes-unite", - "spotty-kids-pay", - "spotty-phones-attend", - "strange-parents-hammer", - "strong-lobsters-hide", - "strong-news-develop", - "sweet-ravens-glow", - "swift-pumpkins-shake", - "tall-frogs-clap", - "tall-tools-compare", - "tame-numbers-smile", - "tame-rockets-sin", - "tasty-feet-cheat", - "tasty-oranges-rescue", - "ten-numbers-happen", - "ten-planets-guess", - "ten-trainers-cough", - "tender-flowers-collect", - "thin-turtles-float", - "thirty-dolls-admire", - "tidy-cooks-mix", - "tidy-cooks-mixed", - "tidy-peaches-nail", - "tiny-donuts-drive", - "tiny-kiwis-know", - "tough-drinks-scream", - "twelve-hounds-know", - "twelve-pens-rescue", - "twelve-shirts-buy", - "twelve-weeks-march", - "twenty-taxis-mate", - "two-coats-smile", - "two-geese-explain", - "two-singers-learn", - "unlucky-pens-search", - "unlucky-wasps-tan", - "warm-maps-scream", - "weak-news-jam", - "wet-emus-work", - "wet-lions-crash", - "wicked-ants-reflect", - "wicked-dolphins-wash", - "wicked-elephants-scream", - "wild-owls-doubt", - "wise-flies-laugh", - "wise-papayas-cough", - "young-ladybugs-decide", - "young-rules-repeat" + "big-yaks-film", + "breezy-cycles-count", + "bright-bulldogs-whisper", + "calm-pans-work", + "chilled-dolls-accept", + "chilled-dolphins-tap", + "chilled-goats-matter", + "clever-eagles-boil", + "cold-boats-sell", + "cold-dolphins-raise", + "create-app-1709052411", + "cyan-dryers-share", + "dirty-apes-divide", + "dry-impalas-serve", + "eight-fireants-crash", + "eighty-suits-admire", + "eleven-cows-learn", + "empty-wolves-rule", + "fast-buses-exercise", + "fifty-insects-yell", + "fifty-moons-study", + "five-beers-accept", + "five-hats-accept", + "five-mayflies-juggle", + "flat-badgers-attack", + "forty-oranges-joke", + "fresh-rings-tell", + "friendly-coats-travel", + "friendly-news-sin", + "funny-flies-collect", + "healthy-experts-rhyme", + "heavy-coats-sniff", + "hungry-points-burn", + "itchy-news-drive", + "kind-pants-speak", + "kind-students-cross", + "late-turkeys-remember", + "lazy-needles-lick", + "lazy-terms-shake", + "lemon-lemons-sparkle", + "long-emus-talk", + "loud-dolls-exist", + "lovely-donkeys-kneel", + "modern-impalas-add", + "neat-owls-pump", + "nervous-lions-suffer", + "nice-beans-wait", + "odd-toys-wonder", + "old-ducks-fetch", + "olive-mails-tell", + "perfect-taxis-give", + "polite-tips-begin", + "polite-zoos-pay", + "poor-beans-cross", + "poor-ladybugs-smell", + "pretty-boats-promise", + "purple-kiwis-complain", + "rare-dryers-check", + "red-taxis-swim", + "renovate-0300bde", + "renovate-08c5b50", + "renovate-1c2c49d", + "renovate-58582bb", + "renovate-5d40e90", + "renovate-6a81dd3", + "renovate-755938a", + "renovate-7aa519f", + "renovate-8f23b96", + "renovate-914f0df", + "renovate-9850908", + "renovate-ea48bac", + "rude-masks-tan", + "rude-sheep-jam", + "selfish-glasses-cheer", + "selfish-walls-perform", + "silver-flowers-trade", + "silver-impalas-run", + "six-grapes-sniff", + "six-nails-hammer", + "six-sloths-listen", + "sixty-queens-mix", + "slimy-trainers-attend", + "slow-readers-clap", + "smart-owls-tease", + "soft-grapes-cough", + "soft-otters-report", + "sour-olives-carry", + "spicy-dragons-sin", + "tasty-beans-confess", + "ten-spoons-help", + "tender-carrots-care", + "thick-pillows-develop", + "thin-spiders-do", + "thirty-shirts-allow", + "tiny-books-destroy", + "tiny-bugs-enjoy", + "tricky-months-hug", + "two-planets-beam", + "two-snails-fry", + "unlucky-jobs-report", + "unlucky-lizards-suffer", + "violet-rocks-rescue", + "wet-sheep-reply", + "young-flies-wash" ] } diff --git a/.changeset/pretty-boats-promise.md b/.changeset/pretty-boats-promise.md new file mode 100644 index 0000000000..751ccaf14c --- /dev/null +++ b/.changeset/pretty-boats-promise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Added 'root' and 'label' class key to TemplateCategoryPicker diff --git a/.changeset/proud-socks-hear.md b/.changeset/proud-socks-hear.md new file mode 100644 index 0000000000..20764ae8a0 --- /dev/null +++ b/.changeset/proud-socks-hear.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-module-elasticsearch': patch +--- + +Added config.d.ts entry with secrets for the shared auth block diff --git a/.changeset/purple-camels-applaud.md b/.changeset/purple-camels-applaud.md deleted file mode 100644 index 4f6858922a..0000000000 --- a/.changeset/purple-camels-applaud.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Fixed a bug where `fullTextFilter` wasn't preserved correctly in the cursor. diff --git a/.changeset/purple-kiwis-complain.md b/.changeset/purple-kiwis-complain.md new file mode 100644 index 0000000000..a5bcb3ed67 --- /dev/null +++ b/.changeset/purple-kiwis-complain.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Migrated to support new auth services. The `CatalogBuilder.create` method now accepts a `discovery` option, which is recommended to forward from the plugin environment, as it will otherwise fall back to use the `HostDiscovery` implementation. diff --git a/.changeset/quick-gifts-leave.md b/.changeset/quick-gifts-leave.md deleted file mode 100644 index 2f5f2a4635..0000000000 --- a/.changeset/quick-gifts-leave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-react': patch ---- - -The `Cluster` component now renders the cluster's title, if specified. diff --git a/.changeset/quick-penguins-refuse.md b/.changeset/quick-penguins-refuse.md deleted file mode 100644 index 5d3165114b..0000000000 --- a/.changeset/quick-penguins-refuse.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch -'@backstage/plugin-scaffolder': patch ---- - -Added `ScaffolderPageContextMenu` to `ActionsPage`, `ListTaskPage`, and `TemplateEditorPage` so that you can more easily navigate between these pages diff --git a/.changeset/quick-ties-stare.md b/.changeset/quick-ties-stare.md deleted file mode 100644 index 19eb50feed..0000000000 --- a/.changeset/quick-ties-stare.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/backend-plugin-api': patch -'@backstage/backend-common': patch ---- - -Support `token` in `readTree`, `readUrl` and `search` diff --git a/.changeset/quiet-donkeys-punch.md b/.changeset/quiet-donkeys-punch.md deleted file mode 100644 index a375ed148c..0000000000 --- a/.changeset/quiet-donkeys-punch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-react': patch ---- - -Extracted common dialog component. diff --git a/.changeset/rare-dryers-check.md b/.changeset/rare-dryers-check.md new file mode 100644 index 0000000000..584481f54d --- /dev/null +++ b/.changeset/rare-dryers-check.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': minor +--- + +**BREAKING**: The `KubernetesBuilder.createBuilder` method now requires the `discovery` service to be forwarded from the plugin environment. This is part of the migration to support new auth services. diff --git a/.changeset/rare-seals-thank.md b/.changeset/rare-seals-thank.md deleted file mode 100644 index 345c1c91b4..0000000000 --- a/.changeset/rare-seals-thank.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch ---- - -Added `RouteResolutionsApi` as a replacement for the routing context. diff --git a/.changeset/real-eggs-sip.md b/.changeset/real-eggs-sip.md deleted file mode 100644 index ca23d792f8..0000000000 --- a/.changeset/real-eggs-sip.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-signals-backend': patch -'@backstage/plugin-signals': patch -'@backstage/plugin-signals-react': patch -'@backstage/plugin-signals-node': patch ---- - -Add support to subscribe and publish messages through signals plugins diff --git a/.changeset/real-grapes-sing.md b/.changeset/real-grapes-sing.md deleted file mode 100644 index 484fc7969a..0000000000 --- a/.changeset/real-grapes-sing.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/app-defaults': minor -'@backstage/plugin-playlist': patch -'@backstage/plugin-scaffolder': minor ---- - -Added stack trace display to `ErrorPage` and updated existing refs diff --git a/.changeset/real-keys-juggle.md b/.changeset/real-keys-juggle.md deleted file mode 100644 index 55bdbf4db3..0000000000 --- a/.changeset/real-keys-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-azure': patch ---- - -Fixed issue where specifying a branch for discovery did not work diff --git a/.changeset/red-bottles-swim.md b/.changeset/red-bottles-swim.md deleted file mode 100644 index eebdc85298..0000000000 --- a/.changeset/red-bottles-swim.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-auth-node': patch ---- - -The helper function `makeProfileInfo` and `PassportHelpers.transformProfile` -were refactored to use the `jose` library. diff --git a/.changeset/red-eggs-serve.md b/.changeset/red-eggs-serve.md deleted file mode 100644 index 1b2c9b3b07..0000000000 --- a/.changeset/red-eggs-serve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-app-backend': patch ---- - -Support injecting config multiple times in a single bundle diff --git a/.changeset/red-taxis-swim.md b/.changeset/red-taxis-swim.md new file mode 100644 index 0000000000..13c758d552 --- /dev/null +++ b/.changeset/red-taxis-swim.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +Use the `AppIcon` component in the navigation item extension. diff --git a/.changeset/renovate-0300bde.md b/.changeset/renovate-0300bde.md new file mode 100644 index 0000000000..71ed1df83c --- /dev/null +++ b/.changeset/renovate-0300bde.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-openapi-utils': patch +--- + +Updated dependency `json-schema-to-ts` to `^3.0.0`. diff --git a/.changeset/renovate-05666d4.md b/.changeset/renovate-05666d4.md deleted file mode 100644 index 3e8a997820..0000000000 --- a/.changeset/renovate-05666d4.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `vite-plugin-node-polyfills` to `^0.21.0`. diff --git a/.changeset/renovate-08c5b50.md b/.changeset/renovate-08c5b50.md new file mode 100644 index 0000000000..9ccefc8f0e --- /dev/null +++ b/.changeset/renovate-08c5b50.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-test-utils': patch +--- + +Updated dependency `testcontainers` to `^10.0.0`. diff --git a/.changeset/renovate-151b8b9.md b/.changeset/renovate-151b8b9.md deleted file mode 100644 index 1702b28596..0000000000 --- a/.changeset/renovate-151b8b9.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch -'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch -'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch -'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch -'@backstage/plugin-scaffolder-backend-module-bitbucket': patch -'@backstage/backend-dynamic-feature-service': patch -'@backstage/plugin-scaffolder-backend-module-github': patch -'@backstage/plugin-scaffolder-backend-module-rails': patch -'@backstage/plugin-catalog-backend-module-gerrit': patch -'@backstage/backend-test-utils': patch -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/backend-app-api': patch -'@backstage/plugin-devtools-backend': patch -'@backstage/plugin-linguist-backend': patch -'@backstage/plugin-techdocs-backend': patch -'@backstage/backend-common': patch -'@backstage/e2e-test-utils': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-rollbar-backend': patch -'@backstage/plugin-scaffolder-node': patch -'@backstage/config-loader': patch -'@techdocs/cli': patch -'@backstage/plugin-techdocs-node': patch -'@backstage/plugin-auth-backend': patch -'@backstage/create-app': patch -'@backstage/repo-tools': patch -'@backstage/plugin-app-backend': patch -'@backstage/cli-node': patch -'@backstage/plugin-app-node': patch -'@backstage/cli': patch ---- - -Updated dependency `fs-extra` to `^11.2.0`. -Updated dependency `@types/fs-extra` to `^11.0.0`. diff --git a/.changeset/renovate-1c2c49d.md b/.changeset/renovate-1c2c49d.md new file mode 100644 index 0000000000..cbf8daa04d --- /dev/null +++ b/.changeset/renovate-1c2c49d.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': patch +--- + +Updated dependency `octokit-plugin-create-pull-request` to `^5.0.0`. diff --git a/.changeset/renovate-235713b.md b/.changeset/renovate-235713b.md deleted file mode 100644 index 148062dadb..0000000000 --- a/.changeset/renovate-235713b.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-entity-validation': patch -'@backstage/plugin-gcp-projects': patch -'@backstage/plugin-scaffolder-react': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-techdocs-module-addons-contrib': patch ---- - -Updated dependency `@react-hookz/web` to `^24.0.0`. diff --git a/.changeset/renovate-2d87790.md b/.changeset/renovate-2d87790.md deleted file mode 100644 index 5230172e2b..0000000000 --- a/.changeset/renovate-2d87790.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.17.0`. -Updated dependency `@rjsf/core` to `5.17.0`. -Updated dependency `@rjsf/material-ui` to `5.17.0`. -Updated dependency `@rjsf/validator-ajv8` to `5.17.0`. diff --git a/.changeset/renovate-3365c7c.md b/.changeset/renovate-3365c7c.md deleted file mode 100644 index 193ba2b702..0000000000 --- a/.changeset/renovate-3365c7c.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `esbuild-loader` to `^4.0.0`. diff --git a/.changeset/renovate-47c1714.md b/.changeset/renovate-47c1714.md deleted file mode 100644 index 4544d36713..0000000000 --- a/.changeset/renovate-47c1714.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.16.1`. -Updated dependency `@rjsf/core` to `5.16.1`. -Updated dependency `@rjsf/material-ui` to `5.16.1`. -Updated dependency `@rjsf/validator-ajv8` to `5.16.1`. diff --git a/.changeset/renovate-49df276.md b/.changeset/renovate-49df276.md deleted file mode 100644 index 942ead5597..0000000000 --- a/.changeset/renovate-49df276.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `eslint-config-prettier` to `^9.0.0`. diff --git a/.changeset/renovate-4b0ba1e.md b/.changeset/renovate-4b0ba1e.md deleted file mode 100644 index 54dcd58187..0000000000 --- a/.changeset/renovate-4b0ba1e.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/config-loader': patch ---- - -Updated dependency `typescript-json-schema` to `^0.63.0`. diff --git a/.changeset/renovate-4b698fb.md b/.changeset/renovate-4b698fb.md deleted file mode 100644 index 220aa5c848..0000000000 --- a/.changeset/renovate-4b698fb.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `vite-plugin-node-polyfills` to `^0.19.0`. diff --git a/.changeset/renovate-58582bb.md b/.changeset/renovate-58582bb.md new file mode 100644 index 0000000000..b1a58017f4 --- /dev/null +++ b/.changeset/renovate-58582bb.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-linguist-backend': patch +'@backstage/plugin-linguist': patch +--- + +Updated dependency `luxon` to `^3.0.0`. diff --git a/.changeset/renovate-5bd1178.md b/.changeset/renovate-5bd1178.md deleted file mode 100644 index 200c66c3fe..0000000000 --- a/.changeset/renovate-5bd1178.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/backend-common': patch -'@techdocs/cli': patch -'@backstage/plugin-techdocs-backend': patch ---- - -Updated dependency `dockerode` to `^4.0.0`. diff --git a/.changeset/forty-cars-scream.md b/.changeset/renovate-5d40e90.md similarity index 53% rename from .changeset/forty-cars-scream.md rename to .changeset/renovate-5d40e90.md index 284acc3c44..122f57fdb8 100644 --- a/.changeset/forty-cars-scream.md +++ b/.changeset/renovate-5d40e90.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-react': patch --- -Allow defining default output text to be shown +Updated dependency `flatted` to `3.3.1`. diff --git a/.changeset/renovate-5f8d1ca.md b/.changeset/renovate-5f8d1ca.md deleted file mode 100644 index 03f8d4b961..0000000000 --- a/.changeset/renovate-5f8d1ca.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-oidc-provider': patch ---- - -Updated dependency `passport` to `^0.7.0`. diff --git a/.changeset/renovate-635e66d.md b/.changeset/renovate-635e66d.md deleted file mode 100644 index 2b5b6ad983..0000000000 --- a/.changeset/renovate-635e66d.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `eslint-webpack-plugin` to `^4.0.0`. diff --git a/.changeset/renovate-6a81dd3.md b/.changeset/renovate-6a81dd3.md new file mode 100644 index 0000000000..9cf6fee161 --- /dev/null +++ b/.changeset/renovate-6a81dd3.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-adr-backend': patch +--- + +Updated dependency `marked` to `^12.0.0`. diff --git a/.changeset/renovate-755938a.md b/.changeset/renovate-755938a.md new file mode 100644 index 0000000000..1182d57c16 --- /dev/null +++ b/.changeset/renovate-755938a.md @@ -0,0 +1,6 @@ +--- +'@backstage/backend-common': patch +'@backstage/backend-test-utils': patch +--- + +Updated dependency `mysql2` to `^3.0.0`. diff --git a/.changeset/renovate-786f04b.md b/.changeset/renovate-786f04b.md deleted file mode 100644 index c5f9b9b891..0000000000 --- a/.changeset/renovate-786f04b.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/cli': patch -'@backstage/codemods': patch -'@backstage/create-app': patch -'@backstage/repo-tools': patch -'@techdocs/cli': patch ---- - -Updated dependency `commander` to `^12.0.0`. diff --git a/.changeset/renovate-7aa519f.md b/.changeset/renovate-7aa519f.md new file mode 100644 index 0000000000..763d94217b --- /dev/null +++ b/.changeset/renovate-7aa519f.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-proxy-backend': patch +--- + +Updated dependency `yup` to `^1.0.0`. diff --git a/.changeset/renovate-8f23b96.md b/.changeset/renovate-8f23b96.md new file mode 100644 index 0000000000..b1dee297e2 --- /dev/null +++ b/.changeset/renovate-8f23b96.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-auth-backend-module-gcp-iap-provider': patch +'@backstage/plugin-auth-backend-module-google-provider': patch +'@backstage/plugin-auth-backend': patch +--- + +Updated dependency `google-auth-library` to `^9.0.0`. diff --git a/.changeset/renovate-914f0df.md b/.changeset/renovate-914f0df.md new file mode 100644 index 0000000000..02942d2018 --- /dev/null +++ b/.changeset/renovate-914f0df.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-home-react': patch +'@backstage/plugin-home': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Updated dependency `@rjsf/utils` to `5.17.1`. +Updated dependency `@rjsf/core` to `5.17.1`. +Updated dependency `@rjsf/material-ui` to `5.17.1`. +Updated dependency `@rjsf/validator-ajv8` to `5.17.1`. diff --git a/.changeset/renovate-95b717a.md b/.changeset/renovate-95b717a.md deleted file mode 100644 index 59beab8d04..0000000000 --- a/.changeset/renovate-95b717a.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-bitbucket-cloud-common': patch ---- - -Updated dependency `ts-morph` to `^21.0.0`. diff --git a/.changeset/renovate-97e6aa5.md b/.changeset/renovate-97e6aa5.md deleted file mode 100644 index 51f4edccd2..0000000000 --- a/.changeset/renovate-97e6aa5.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-opencost': patch ---- - -Updated dependency `date-fns` to `^3.0.0`. diff --git a/.changeset/renovate-9850908.md b/.changeset/renovate-9850908.md new file mode 100644 index 0000000000..4911d08027 --- /dev/null +++ b/.changeset/renovate-9850908.md @@ -0,0 +1,38 @@ +--- +'@backstage/backend-common': patch +'@backstage/backend-tasks': patch +'@backstage/backend-test-utils': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-auth-node': 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-ldap': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-backend-module-puppetdb': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-linguist-backend': patch +'@backstage/plugin-notifications-backend': patch +'@backstage/plugin-notifications-node': patch +'@backstage/plugin-permission-common': patch +'@backstage/plugin-playlist-backend': patch +'@backstage/plugin-proxy-backend': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-search-backend-module-elasticsearch': patch +'@backstage/plugin-search-backend-module-pg': patch +'@backstage/plugin-search-backend-node': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-signals-backend': patch +'@backstage/plugin-signals-node': patch +'@backstage/plugin-signals': patch +'@backstage/plugin-tech-insights-backend': patch +--- + +Updated dependency `uuid` to `^9.0.0`. +Updated dependency `@types/uuid` to `^9.0.0`. diff --git a/.changeset/renovate-b35b354.md b/.changeset/renovate-b35b354.md deleted file mode 100644 index 750ef50a74..0000000000 --- a/.changeset/renovate-b35b354.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-tasks': patch ---- - -Updated dependency `cron` to `^3.0.0`. diff --git a/.changeset/renovate-c392808.md b/.changeset/renovate-c392808.md deleted file mode 100644 index 4d7f660d34..0000000000 --- a/.changeset/renovate-c392808.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-gcalendar': patch -'@backstage/plugin-microsoft-calendar': patch -'@backstage/plugin-techdocs': patch ---- - -Updated dependency `dompurify` to `^3.0.0`. -Updated dependency `@types/dompurify` to `^3.0.0`. diff --git a/.changeset/renovate-d7337c1.md b/.changeset/renovate-d7337c1.md deleted file mode 100644 index dabbee8a44..0000000000 --- a/.changeset/renovate-d7337c1.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `fork-ts-checker-webpack-plugin` to `^9.0.0`. diff --git a/.changeset/renovate-ea48bac.md b/.changeset/renovate-ea48bac.md new file mode 100644 index 0000000000..ca56d7490a --- /dev/null +++ b/.changeset/renovate-ea48bac.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Updated dependency `yauzl` to `^3.0.0`. diff --git a/.changeset/renovate-f253121.md b/.changeset/renovate-f253121.md deleted file mode 100644 index 42899973fd..0000000000 --- a/.changeset/renovate-f253121.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@backstage/backend-common': patch -'@backstage/cli': patch -'@backstage/integration': patch -'@backstage/plugin-catalog-backend-module-github': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-techdocs-module-addons-contrib': patch -'@backstage/plugin-techdocs-node': patch -'@backstage/plugin-techdocs': patch ---- - -Updated dependency `git-url-parse` to `^14.0.0`. diff --git a/.changeset/renovate-f4b1d70.md b/.changeset/renovate-f4b1d70.md deleted file mode 100644 index 7b07ee8364..0000000000 --- a/.changeset/renovate-f4b1d70.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/cli': patch -'@backstage/plugin-scaffolder-backend': patch ---- - -Updated dependency `esbuild` to `^0.20.0`. diff --git a/.changeset/renovate-f58dd5c.md b/.changeset/renovate-f58dd5c.md deleted file mode 100644 index 8a226034ea..0000000000 --- a/.changeset/renovate-f58dd5c.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-api-docs': patch ---- - -Updated dependency `graphiql` to `3.1.0`. diff --git a/.changeset/renovate-f92a114.md b/.changeset/renovate-f92a114.md deleted file mode 100644 index 6ca0ea33d8..0000000000 --- a/.changeset/renovate-f92a114.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependency `eslint-plugin-deprecation` to `^2.0.0`. diff --git a/.changeset/renovate-fb2e0b9.md b/.changeset/renovate-fb2e0b9.md deleted file mode 100644 index 39277aaa2a..0000000000 --- a/.changeset/renovate-fb2e0b9.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-api-docs': patch ---- - -Updated dependency `@asyncapi/react-component` to `1.2.13`. diff --git a/.changeset/rich-bees-fry.md b/.changeset/rich-bees-fry.md deleted file mode 100644 index 281719340b..0000000000 --- a/.changeset/rich-bees-fry.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-app-backend': patch -'@backstage/plugin-app-node': patch ---- - -Allow the `app-backend` plugin to use a global configuration schema provided externally through an extension. diff --git a/.changeset/rotten-lemons-cry.md b/.changeset/rotten-lemons-cry.md deleted file mode 100644 index 2bcc4c2ea7..0000000000 --- a/.changeset/rotten-lemons-cry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-microsoft-provider': patch ---- - -Added the possibility to use custom scopes for performing login with Microsoft EntraID. diff --git a/.changeset/rude-masks-tan.md b/.changeset/rude-masks-tan.md new file mode 100644 index 0000000000..8c8d52da6b --- /dev/null +++ b/.changeset/rude-masks-tan.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-notifications-node': minor +'@backstage/plugin-notifications-backend': patch +--- + +Migrated to using the new auth services. diff --git a/.changeset/rude-sheep-jam.md b/.changeset/rude-sheep-jam.md new file mode 100644 index 0000000000..75b0354e9c --- /dev/null +++ b/.changeset/rude-sheep-jam.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-azure-devops': minor +--- + +**BREAKING** The `AzureDevOpsClient` no longer requires `identityAPi` but now requires `fetchApi`. + +Updated to use `fetchApi` as per [ADR013](https://backstage.io/docs/architecture-decisions/adrs-adr013) diff --git a/.changeset/selfish-glasses-cheer.md b/.changeset/selfish-glasses-cheer.md new file mode 100644 index 0000000000..be267eb0f3 --- /dev/null +++ b/.changeset/selfish-glasses-cheer.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +`SignInPage`'s `'guest'` provider now supports the `@backstage/plugin-auth-backend-module-guest-provider` package to generate tokens. It will continue to use the old frontend-only auth as a fallback. diff --git a/.changeset/selfish-mails-scream.md b/.changeset/selfish-mails-scream.md deleted file mode 100644 index 7d1149f27a..0000000000 --- a/.changeset/selfish-mails-scream.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@techdocs/cli': patch ---- - -fix: mkdocs parameter casing diff --git a/.changeset/curvy-ladybugs-impress.md b/.changeset/selfish-walls-perform.md similarity index 53% rename from .changeset/curvy-ladybugs-impress.md rename to .changeset/selfish-walls-perform.md index ab799e4888..3e7565cf04 100644 --- a/.changeset/curvy-ladybugs-impress.md +++ b/.changeset/selfish-walls-perform.md @@ -2,4 +2,4 @@ '@backstage/plugin-adr': patch --- -Updated README +Remove unused package dependencies diff --git a/.changeset/serious-carpets-learn.md b/.changeset/serious-carpets-learn.md deleted file mode 100644 index 1f13420976..0000000000 --- a/.changeset/serious-carpets-learn.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor -'@backstage/plugin-scaffolder-common': minor -'@backstage/plugin-scaffolder-react': minor -'@backstage/plugin-scaffolder-node': minor -'@backstage/plugin-scaffolder': patch ---- - -Introduced the first version of recoverable tasks. diff --git a/.changeset/serious-dryers-grin.md b/.changeset/serious-dryers-grin.md deleted file mode 100644 index 24d17f4959..0000000000 --- a/.changeset/serious-dryers-grin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': patch ---- - -Fix entity content extension filtering. diff --git a/.changeset/seven-dots-serve.md b/.changeset/seven-dots-serve.md deleted file mode 100644 index 80919b5d28..0000000000 --- a/.changeset/seven-dots-serve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': minor ---- - -Exported `CatalogTable.defaultColumnsFunc` for defining the columns in `` of some Kinds while using the default columns for the others. diff --git a/.changeset/seven-plums-return.md b/.changeset/seven-plums-return.md deleted file mode 100644 index 71016577b1..0000000000 --- a/.changeset/seven-plums-return.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes-common': patch ---- - -Clusters configured with the `aws` authentication strategy can now customize the -`x-k8s-aws-id` header value used to generate tokens. This value can be specified -specified via the `kubernetes.io/x-k8s-aws-id` parameter (in -`metadata.annotations` for clusters in the catalog, or the `authMetadata` block -on clusters in the app-config). This is particularly helpful when a Backstage -instance contains multiple AWS clusters with the same name in different regions --- using this new parameter, the clusters can be given different logical names -to distinguish them but still use the same ID for the purposes of generating -tokens. diff --git a/.changeset/shaggy-trainers-rule.md b/.changeset/shaggy-trainers-rule.md deleted file mode 100644 index 4140a400e1..0000000000 --- a/.changeset/shaggy-trainers-rule.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-plugin-api': patch ---- - -Throw a more specific exception `NotImplementedError` when an API implementation cannot be found. diff --git a/.changeset/shaggy-windows-cross.md b/.changeset/shaggy-windows-cross.md deleted file mode 100644 index 185c6d59ef..0000000000 --- a/.changeset/shaggy-windows-cross.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/app-defaults': patch -'@backstage/core-app-api': patch -'@backstage/test-utils': patch ---- - -Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`. diff --git a/.changeset/sharp-pandas-hunt.md b/.changeset/sharp-pandas-hunt.md deleted file mode 100644 index 1c69c02a0b..0000000000 --- a/.changeset/sharp-pandas-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-bitrise': patch ---- - -Update README diff --git a/.changeset/shiny-apes-glow.md b/.changeset/shiny-apes-glow.md deleted file mode 100644 index 5ff66157cd..0000000000 --- a/.changeset/shiny-apes-glow.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': minor -'@backstage/plugin-scaffolder-backend': patch ---- - -New scaffolder module `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud`. - -Extracted from `@backstage/plugin-scaffolder-backend-module-bitbucket` -and replaces its actions related to Bitbucket Cloud. - -- `publish:bitbucketCloud` -- `bitbucket:pipelines:run` diff --git a/.changeset/shiny-clocks-greet.md b/.changeset/shiny-clocks-greet.md deleted file mode 100644 index 0c112ff81f..0000000000 --- a/.changeset/shiny-clocks-greet.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-user-settings': patch ---- - -conditionally rendering the user name and email in user settings page diff --git a/.changeset/shiny-jeans-begin.md b/.changeset/shiny-jeans-begin.md deleted file mode 100644 index d542747b34..0000000000 --- a/.changeset/shiny-jeans-begin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/integration': patch ---- - -Validate if the `baseUrl` is a valid URL diff --git a/.changeset/shiny-poets-tease.md b/.changeset/shiny-poets-tease.md deleted file mode 100644 index a991601a88..0000000000 --- a/.changeset/shiny-poets-tease.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-node': patch ---- - -Update to a newer version of `@trendyol-js/openstack-swift-sdk` diff --git a/.changeset/short-cherries-mix.md b/.changeset/short-cherries-mix.md deleted file mode 100644 index 866f7a0971..0000000000 --- a/.changeset/short-cherries-mix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-gerrit': patch ---- - -Provide default branch when creating repositories. diff --git a/.changeset/shy-carrots-decide.md b/.changeset/shy-carrots-decide.md deleted file mode 100644 index 5f64f3d4bd..0000000000 --- a/.changeset/shy-carrots-decide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-app-backend': patch ---- - -Do not force caching of the Javascript asset that contains the injected config. diff --git a/.changeset/silent-elephants-reflect.md b/.changeset/silent-elephants-reflect.md new file mode 100644 index 0000000000..f9f35421bc --- /dev/null +++ b/.changeset/silent-elephants-reflect.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-notifications-backend': minor +'@backstage/plugin-notifications': minor +--- + +The NotificationsPage newly uses pagination implemented on the backend layer to avoid large dataset transfers diff --git a/.changeset/silent-hotels-knock.md b/.changeset/silent-hotels-knock.md deleted file mode 100644 index 7ff5d978d2..0000000000 --- a/.changeset/silent-hotels-knock.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -'@backstage/frontend-app-api': minor ---- - -**BREAKING**: The `app.routes.bindings` app-config mapping has been simplified. You now only need to specify the plugin ID and route ID on both sides of the mapping. - -Old form: - -```yaml -app: - routes: - bindings: - plugin.catalog.externalRoutes.viewTechDoc: plugin.techdocs.routes.docRoot - plugin.catalog.externalRoutes.createComponent: plugin.catalog-import.routes.importPage -``` - -New form: - -```yaml -app: - routes: - bindings: - catalog.viewTechDoc: techdocs.docRoot - catalog.createComponent: catalog-import.importPage -``` diff --git a/.changeset/silent-poets-grab.md b/.changeset/silent-poets-grab.md deleted file mode 100644 index 0d76e263d2..0000000000 --- a/.changeset/silent-poets-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-app-api': patch ---- - -Improved the error message when data input/output shapes do not match diff --git a/.changeset/silent-waves-pretend.md b/.changeset/silent-waves-pretend.md deleted file mode 100644 index 5986579fe6..0000000000 --- a/.changeset/silent-waves-pretend.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-auth-backend-module-aws-alb-provider': minor -'@backstage/plugin-auth-backend': patch ---- - -Migrated the AWS ALB auth provider to new `@backstage/plugin-auth-backend-module-aws-alb-provider` module package. diff --git a/.changeset/silver-crabs-exercise.md b/.changeset/silver-crabs-exercise.md deleted file mode 100644 index ff34b5a3c3..0000000000 --- a/.changeset/silver-crabs-exercise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-api-docs': minor ---- - -Migrate the `api-docs` to the new frontend system. It is experimental and available via alpha subpath. diff --git a/.changeset/silver-flowers-trade.md b/.changeset/silver-flowers-trade.md new file mode 100644 index 0000000000..8701de375c --- /dev/null +++ b/.changeset/silver-flowers-trade.md @@ -0,0 +1,40 @@ +--- +'@backstage/plugin-catalog-backend-module-bitbucket-cloud': minor +--- + +BREAKING CHANGE: Migrates the `BitbucketCloudEntityProvider` to use the `EventsService`; fix new backend system support. + +`BitbucketCloudEntityProvider.fromConfig` accepts `events: EventsService` as optional argument to its `options`. +With provided `events`, the event-based updates/refresh will be available. +However, the `EventSubscriber` interface was removed including its `supportsEventTopics()` and `onEvent(params)`. + +The event subscription happens on `connect(connection)` if the `events` is available. + +**Migration:** + +```diff + const bitbucketCloudProvider = BitbucketCloudEntityProvider.fromConfig( + env.config, + { + catalogApi: new CatalogClient({ discoveryApi: env.discovery }), ++ events: env.events, + logger: env.logger, + scheduler: env.scheduler, + tokenManager: env.tokenManager, + }, + ); +- env.eventBroker.subscribe(bitbucketCloudProvider); +``` + +**New Backend System:** + +Before this change, using this module with the new backend system was broken. +Now, you can add the catalog module for Bitbucket Cloud incl. event support backend. +Event support will always be enabled. +However, no updates/refresh will happen without receiving events. + +```ts +backend.add( + import('@backstage/plugin-catalog-backend-module-bitbucket-cloud/alpha'), +); +``` diff --git a/.changeset/silver-impalas-run.md b/.changeset/silver-impalas-run.md new file mode 100644 index 0000000000..22df521680 --- /dev/null +++ b/.changeset/silver-impalas-run.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-import': patch +--- + +Fixed an issue generating a wrong entity link at the end of the import process diff --git a/.changeset/six-emus-buy.md b/.changeset/six-emus-buy.md deleted file mode 100644 index 1ef2a8e124..0000000000 --- a/.changeset/six-emus-buy.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-signals-react': patch -'@backstage/plugin-signals-node': patch -'@backstage/plugin-signals': patch ---- - -Allow defining signal type to publish and receive diff --git a/.changeset/six-grapes-sniff.md b/.changeset/six-grapes-sniff.md new file mode 100644 index 0000000000..095e96dd77 --- /dev/null +++ b/.changeset/six-grapes-sniff.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend': patch +--- + +Update the router to use the new `auth` services, it now accepts an optional discovery service option to get credentials for the permission service. diff --git a/.changeset/six-jobs-sin.md b/.changeset/six-jobs-sin.md deleted file mode 100644 index 307190ae81..0000000000 --- a/.changeset/six-jobs-sin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/catalog-client': patch ---- - -Internal updates to auto-generated files. diff --git a/.changeset/six-melons-end.md b/.changeset/six-melons-end.md deleted file mode 100644 index f139e49887..0000000000 --- a/.changeset/six-melons-end.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-react': patch ---- - -Fixed a bug where the logs dialog and any other functionality depending on the proxy endpoint would fail for clusters configured with the OIDC auth provider. diff --git a/.changeset/six-nails-hammer.md b/.changeset/six-nails-hammer.md new file mode 100644 index 0000000000..d0cf7a0ea7 --- /dev/null +++ b/.changeset/six-nails-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-dynamic-feature-service': patch +--- + +Add `events: EventsService` to `LegacyPluginEnvironment`. diff --git a/.changeset/six-sloths-listen.md b/.changeset/six-sloths-listen.md new file mode 100644 index 0000000000..47886e3f77 --- /dev/null +++ b/.changeset/six-sloths-listen.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Internal refactor to break out how the router is constructed diff --git a/.changeset/sixty-bags-fry.md b/.changeset/sixty-bags-fry.md deleted file mode 100644 index 139e31c6a4..0000000000 --- a/.changeset/sixty-bags-fry.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-kubernetes-node': patch ---- - -The `ClusterDetails` type now has a `title` field, which should be a -human-readable name. diff --git a/.changeset/sixty-queens-mix.md b/.changeset/sixty-queens-mix.md new file mode 100644 index 0000000000..8fe3f74617 --- /dev/null +++ b/.changeset/sixty-queens-mix.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +'@backstage/plugin-scaffolder-node': patch +--- + +Introducing checkpoints for scaffolder task action idempotency diff --git a/.changeset/sixty-shoes-prove.md b/.changeset/sixty-shoes-prove.md deleted file mode 100644 index fe9438eeb2..0000000000 --- a/.changeset/sixty-shoes-prove.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-react': minor ---- - -**BREAKING** The pod exec terminal is now disabled by default since there are several scenarios where it is known not to work. It can be re-enabled at your own risk by setting the config parameter `kubernetes.podExecTerminal.enabled` to `true`. diff --git a/.changeset/slimy-falcons-poke.md b/.changeset/slimy-falcons-poke.md new file mode 100644 index 0000000000..9365c5f164 --- /dev/null +++ b/.changeset/slimy-falcons-poke.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-notifications-backend': minor +'@backstage/plugin-signals-backend': minor +'@backstage/plugin-signals-node': minor +--- + +BREAKING CHANGE: Migrates signals to use the `EventsService` and makes it mandatory diff --git a/.changeset/slimy-rats-fly.md b/.changeset/slimy-rats-fly.md deleted file mode 100644 index 81fcae5bb2..0000000000 --- a/.changeset/slimy-rats-fly.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-org': patch ---- - -Added basic support for the new frontend system, exported from the `/alpha` subpath. diff --git a/.changeset/green-flies-draw.md b/.changeset/slimy-trainers-attend.md similarity index 57% rename from .changeset/green-flies-draw.md rename to .changeset/slimy-trainers-attend.md index 6b967feceb..43b2b807be 100644 --- a/.changeset/green-flies-draw.md +++ b/.changeset/slimy-trainers-attend.md @@ -2,4 +2,4 @@ '@backstage/cli': patch --- -Upgrade jest +Add .ico import support diff --git a/.changeset/slow-readers-clap.md b/.changeset/slow-readers-clap.md new file mode 100644 index 0000000000..5f67c6cf46 --- /dev/null +++ b/.changeset/slow-readers-clap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-devtools-backend': minor +--- + +**BREAKING**: The `createRouter` method now requires the `discovery` service to be forwarded from the plugin environment. This is part of the migration to support new auth services. diff --git a/.changeset/smart-hairs-lick.md b/.changeset/smart-hairs-lick.md new file mode 100644 index 0000000000..45b5800150 --- /dev/null +++ b/.changeset/smart-hairs-lick.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Fix a spacing issue for the SidebarSubmenu in case a SidebarScrollWrapper is used that made it hard to reach the SidebarSubmenu diff --git a/.changeset/smart-numbers-call.md b/.changeset/smart-numbers-call.md deleted file mode 100644 index 24a2053259..0000000000 --- a/.changeset/smart-numbers-call.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-app-api': patch ---- - -The default `ComponentsApi` implementation now uses the `ComponentRef` ID as the component key, rather than the reference instance. This fixes a bug where duplicate installations of `@backstage/frontend-plugin-api` would break the app. diff --git a/.changeset/smart-owls-tease.md b/.changeset/smart-owls-tease.md new file mode 100644 index 0000000000..8d59586bf8 --- /dev/null +++ b/.changeset/smart-owls-tease.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-app-api': minor +--- + +**BREAKING**: For users that have migrated to the new backend system, incoming requests will now be rejected if they are not properly authenticated (e.g. with a Backstage bearer token or a backend token). Please see the [Auth Service Migration tutorial](https://backstage.io/docs/tutorials/auth-service-migration) for more information on how to circumvent this behavior in the short term and how to properly leverage it in the longer term. + +Added service factories for the new [`auth`](https://backstage.io/docs/backend-system/core-services/auth/), [`httpAuth`](https://backstage.io/docs/backend-system/core-services/http-auth), and [`userInfo`](https://backstage.io/docs/backend-system/core-services/user-info) services that were created as part of [BEP-0003](https://github.com/backstage/backstage/tree/master/beps/0003-auth-architecture-evolution). diff --git a/.changeset/soft-balloons-relax.md b/.changeset/soft-balloons-relax.md deleted file mode 100644 index 3fae8984a3..0000000000 --- a/.changeset/soft-balloons-relax.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/app-defaults': patch ---- - -Fix invalid HTTP status code 501 in Error Page diff --git a/.changeset/soft-beans-tease.md b/.changeset/soft-beans-tease.md deleted file mode 100644 index 881900e773..0000000000 --- a/.changeset/soft-beans-tease.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-cloudbuild': patch ---- - -Add telemetry HTTP header Google Cloud Platform diff --git a/.changeset/soft-grapes-cough.md b/.changeset/soft-grapes-cough.md new file mode 100644 index 0000000000..0e43c01a08 --- /dev/null +++ b/.changeset/soft-grapes-cough.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-node': patch +--- + +The `ServerPermissionClient` has been migrated to implement the `PermissionsService` interface, now accepting the new `BackstageCredentials` object in addition to the `token` option, which is now deprecated. It now also optionally depends on the new `AuthService`. diff --git a/.changeset/soft-otters-report.md b/.changeset/soft-otters-report.md new file mode 100644 index 0000000000..d71d3a2e9a --- /dev/null +++ b/.changeset/soft-otters-report.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +Add support for Service Tokens to Cloudflare Access auth provider diff --git a/.changeset/sour-ligers-hunt.md b/.changeset/sour-ligers-hunt.md deleted file mode 100644 index 5642494c24..0000000000 --- a/.changeset/sour-ligers-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Added `experimentalExtraAllowedOrigins` to config diff --git a/.changeset/sour-olives-carry.md b/.changeset/sour-olives-carry.md new file mode 100644 index 0000000000..d0c3bdd6d0 --- /dev/null +++ b/.changeset/sour-olives-carry.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Made the `DefaultUserInfoService` claims check stricter diff --git a/.changeset/sour-rivers-fry.md b/.changeset/sour-rivers-fry.md deleted file mode 100644 index 1b74850614..0000000000 --- a/.changeset/sour-rivers-fry.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Updated `packages/app` as well as the root `package.json` type resolutions to use React v18. - -The `@testing-library/*` dependencies have also been updated to the ones compatible with React v18, and the test at `packages/app/src/App.test.tsx` had been updated to use more modern patterns that work better with these new versions. - -For information on how to migrate existing apps to React v18, see the [migration guide](https://backstage.io/docs/tutorials/react18-migration) diff --git a/.changeset/spicy-bobcats-return.md b/.changeset/spicy-bobcats-return.md deleted file mode 100644 index 9bd4b33784..0000000000 --- a/.changeset/spicy-bobcats-return.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-dynatrace': patch ---- - -Fixed Dynatrace plugin proxy configuration diff --git a/.changeset/spicy-dragons-sin.md b/.changeset/spicy-dragons-sin.md new file mode 100644 index 0000000000..06d3316dd5 --- /dev/null +++ b/.changeset/spicy-dragons-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch +--- + +Internal refactor to avoid deprecated method. diff --git a/.changeset/spotty-jokes-unite.md b/.changeset/spotty-jokes-unite.md deleted file mode 100644 index 15097e42d0..0000000000 --- a/.changeset/spotty-jokes-unite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Harmonize the package naming and allow custom prefix diff --git a/.changeset/spotty-kids-pay.md b/.changeset/spotty-kids-pay.md deleted file mode 100644 index 157515201d..0000000000 --- a/.changeset/spotty-kids-pay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Ability for user to configure backstage token expiration diff --git a/.changeset/spotty-phones-attend.md b/.changeset/spotty-phones-attend.md deleted file mode 100644 index 79bd38061d..0000000000 --- a/.changeset/spotty-phones-attend.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-aws': patch ---- - -Move the AWS account e-mail from labels to annotations to fix the creation of `cloud-account` resources. diff --git a/.changeset/strange-parents-hammer.md b/.changeset/strange-parents-hammer.md deleted file mode 100644 index 57d5eeb83d..0000000000 --- a/.changeset/strange-parents-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/test-utils': minor ---- - -Added `components` option to `TestAppOptions`, which will be forwarded as the `components` option to `createApp`. diff --git a/.changeset/strong-lobsters-hide.md b/.changeset/strong-lobsters-hide.md deleted file mode 100644 index 7b51355eb7..0000000000 --- a/.changeset/strong-lobsters-hide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch ---- - -App component extensions are no longer wrapped in an `ExtensionBoundary`, allowing them to inherit the outer context instead. diff --git a/.changeset/strong-news-develop.md b/.changeset/strong-news-develop.md deleted file mode 100644 index 1cbe4dda07..0000000000 --- a/.changeset/strong-news-develop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-explore': patch ---- - -Use the EntityDisplayName component for rendering Group nodes diff --git a/.changeset/sweet-ravens-glow.md b/.changeset/sweet-ravens-glow.md deleted file mode 100644 index 045f7edbf2..0000000000 --- a/.changeset/sweet-ravens-glow.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/integration': minor -'@backstage/backend-common': patch ---- - -Fix rate limit detection by looking for HTTP status code 429 and updating the header `x-ratelimit-remaining` to look for in case of a 403 code is returned diff --git a/.changeset/swift-pumpkins-shake.md b/.changeset/swift-pumpkins-shake.md deleted file mode 100644 index c7a0a44ade..0000000000 --- a/.changeset/swift-pumpkins-shake.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/backend-dynamic-feature-service': minor ---- - -Implement the discovery of additional individual configuration schemas for dynamic plugins, and provide: - -- an alternate implementation of the root logger service that takes them into account, -- an extension to the App backend plugin to set a global configuration schema that takes them into account. diff --git a/.changeset/tall-fireants-fix.md b/.changeset/tall-fireants-fix.md deleted file mode 100644 index 3fbc78290f..0000000000 --- a/.changeset/tall-fireants-fix.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-catalog-backend': patch ---- - -Upgraded `prom-client` to version 15 diff --git a/.changeset/tall-frogs-clap.md b/.changeset/tall-frogs-clap.md deleted file mode 100644 index 1e87ca316c..0000000000 --- a/.changeset/tall-frogs-clap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-sites-backend': patch ---- - -Added `permissionIntegrationRouter` for azure-sites-backend routes diff --git a/.changeset/tall-tools-compare.md b/.changeset/tall-tools-compare.md deleted file mode 100644 index f55c8ef5a5..0000000000 --- a/.changeset/tall-tools-compare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-node': patch ---- - -Introduced `PinnipedHelper` class to enable authentication to Kubernetes clusters through Pinniped diff --git a/.changeset/tame-numbers-smile.md b/.changeset/tame-numbers-smile.md deleted file mode 100644 index 1d675f8c9c..0000000000 --- a/.changeset/tame-numbers-smile.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes-node': patch ---- - -Enabling authentication to kubernetes clusters with mTLS x509 client certs diff --git a/.changeset/tame-rockets-sin.md b/.changeset/tame-rockets-sin.md deleted file mode 100644 index 30c7289871..0000000000 --- a/.changeset/tame-rockets-sin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-module-addons-contrib': patch ---- - -Fix position of the ReportIssue component when is displaying at the top of the container. diff --git a/.changeset/tasty-beans-confess.md b/.changeset/tasty-beans-confess.md new file mode 100644 index 0000000000..4498272dbf --- /dev/null +++ b/.changeset/tasty-beans-confess.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +**BREAKING**: The `CatalogIdentityClient` constructor now also requires the `discovery` service to be forwarded from the plugin environment. This is part of the migration to support the new auth services, which has also been done for the `createRouter` function. diff --git a/.changeset/tasty-feet-cheat.md b/.changeset/tasty-feet-cheat.md deleted file mode 100644 index 1e93439fa6..0000000000 --- a/.changeset/tasty-feet-cheat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/repo-tools': patch ---- - -Fixes an issue where comments would be duplicated in the template. Also, removes a header with the title and version of the OpenAPI spec from generated code. diff --git a/.changeset/tasty-oranges-rescue.md b/.changeset/tasty-oranges-rescue.md deleted file mode 100644 index b146c2e143..0000000000 --- a/.changeset/tasty-oranges-rescue.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@backstage/plugin-auth-backend': minor ---- - -**BREAKING**: The `saml` provider has been migrated from `passport-saml` to `@node-saml/passport-saml`. - -This comes with breaking changes to config options: - -- `audience` is now mandatory -- `wantAuthnResponseSigned` is now exposed and defaults to `true` -- `wantAssertionsSigned` is now exposed and defaults to `true` diff --git a/.changeset/ten-numbers-happen.md b/.changeset/ten-numbers-happen.md deleted file mode 100644 index 73397d4568..0000000000 --- a/.changeset/ten-numbers-happen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Custom per-cluster auth metadata (mainly for use with custom `AuthenticationStrategy` implementations) can now be specified in the `authMetadata` property of clusters in the app-config. diff --git a/.changeset/ten-planets-guess.md b/.changeset/ten-planets-guess.md deleted file mode 100644 index c8510dc6b2..0000000000 --- a/.changeset/ten-planets-guess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-home': patch ---- - -Fix typo in VisitsStorageApi diff --git a/.changeset/ten-spoons-help.md b/.changeset/ten-spoons-help.md new file mode 100644 index 0000000000..5089154424 --- /dev/null +++ b/.changeset/ten-spoons-help.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-insights-node': minor +--- + +**BREAKING**: The `FactRetrieverContext` type now contains an additional `auth` field. diff --git a/.changeset/ten-trainers-cough.md b/.changeset/ten-trainers-cough.md deleted file mode 100644 index 53a82def90..0000000000 --- a/.changeset/ten-trainers-cough.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor -'@backstage/plugin-scaffolder-node': minor ---- - -Support providing an overriding token for `fetch:template`, `fetch:plain` and `fetch:file` when interacting with upstream integrations diff --git a/.changeset/tender-apes-doubt.md b/.changeset/tender-apes-doubt.md new file mode 100644 index 0000000000..f727bdeb25 --- /dev/null +++ b/.changeset/tender-apes-doubt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-signals-backend': patch +--- + +Improved error logging and fixed authentication diff --git a/.changeset/tender-carrots-care.md b/.changeset/tender-carrots-care.md new file mode 100644 index 0000000000..8afdbcf884 --- /dev/null +++ b/.changeset/tender-carrots-care.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-notifications-backend': minor +'@backstage/plugin-notifications': minor +'@backstage/plugin-notifications-common': patch +--- + +The Notifications frontend has been redesigned towards list view with condensed row details. The 'done' attribute has been removed to keep the Notifications aligned with the idea of a messaging system instead of a task manager. diff --git a/.changeset/tender-flowers-collect.md b/.changeset/tender-flowers-collect.md deleted file mode 100644 index 05339034b8..0000000000 --- a/.changeset/tender-flowers-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': minor ---- - -Updated the styling for `` tags to avoid word break. diff --git a/.changeset/thick-pillows-develop.md b/.changeset/thick-pillows-develop.md new file mode 100644 index 0000000000..9be71da55d --- /dev/null +++ b/.changeset/thick-pillows-develop.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-insights-backend': patch +--- + +Added support for the new `AuthService`. diff --git a/.changeset/thick-pillows-punch.md b/.changeset/thick-pillows-punch.md deleted file mode 100644 index def589d3f8..0000000000 --- a/.changeset/thick-pillows-punch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-node': patch ---- - -Add gitea as new type to be used from integrations configuration diff --git a/.changeset/thin-spiders-do.md b/.changeset/thin-spiders-do.md new file mode 100644 index 0000000000..df8672fd6c --- /dev/null +++ b/.changeset/thin-spiders-do.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-backstage-openapi': patch +--- + +Migrated to use new auth service. diff --git a/.changeset/thin-turtles-float.md b/.changeset/thin-turtles-float.md deleted file mode 100644 index 7416093e17..0000000000 --- a/.changeset/thin-turtles-float.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Clusters in the catalog can now specify a human-readable title via `metadata.title`. diff --git a/.changeset/thirty-bags-try.md b/.changeset/thirty-bags-try.md deleted file mode 100644 index 98d6c5620b..0000000000 --- a/.changeset/thirty-bags-try.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': minor -'@backstage/plugin-catalog-node': minor ---- - -Adds support for supplying field validators to the new backend's catalog plugin. If you're using entity policies, you should use the new `transformLegacyPolicyToProcessor` function to install them as processors instead. - -```ts -import { - catalogProcessingExtensionPoint, - catalogModelExtensionPoint, -} from '@backstage/plugin-catalog-node/alpha'; -import {myPolicy} from './my-policy'; - -export const catalogModulePolicyProvider = createBackendModule({ - pluginId: 'catalog', - moduleId: 'internal-policy-provider', - register(reg) { - reg.registerInit({ - deps: { - modelExtensions: catalogModelExtensionPoint, - processingExtensions: catalogProcessingExtensionPoint, - }, - async init({ modelExtensions, processingExtensions }) { - modelExtensions.setFieldValidators({ - ... - }); - processingExtensions.addProcessors(transformLegacyPolicyToProcessor(myPolicy)) - }, - }); - }, -}); -``` diff --git a/.changeset/thirty-bikes-stare.md b/.changeset/thirty-bikes-stare.md new file mode 100644 index 0000000000..d8249299a7 --- /dev/null +++ b/.changeset/thirty-bikes-stare.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-scaffolder-node-test-utils': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder-node': patch +--- + +Made "checkpoint" on scaffolder action context non-optional diff --git a/.changeset/thirty-dolls-admire.md b/.changeset/thirty-dolls-admire.md deleted file mode 100644 index 1011508a98..0000000000 --- a/.changeset/thirty-dolls-admire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': minor ---- - -Prevent Entity Providers from eliminating Users and Groups from the DB when the synchronisation fails diff --git a/.changeset/thirty-shirts-allow.md b/.changeset/thirty-shirts-allow.md new file mode 100644 index 0000000000..b84a3a621e --- /dev/null +++ b/.changeset/thirty-shirts-allow.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-common': patch +--- + +Added a `createLegacyAuthAdapters` function that can be used as a compatibility adapter for backend plugins who want to start using the new [`auth`](https://backstage.io/docs/backend-system/core-services/auth/) and [`httpAuth`](https://backstage.io/docs/backend-system/core-services/http-auth) services that were created as part of [BEP-0003](https://github.com/backstage/backstage/tree/master/beps/0003-auth-architecture-evolution). + +See the [Auth Service Migration tutorial](https://backstage.io/docs/tutorials/auth-service-migration) for more information on the usage of this adapter. diff --git a/.changeset/tidy-cooks-mix.md b/.changeset/tidy-cooks-mix.md deleted file mode 100644 index 873de64a45..0000000000 --- a/.changeset/tidy-cooks-mix.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -'@backstage/plugin-azure-sites-backend': patch -'@backstage/plugin-azure-sites-common': patch -'@backstage/plugin-azure-sites': patch ---- - -Azure Sites `start` and `stop` action is now protected with the Permissions framework. - -The below example describes an action that forbids anyone but the owner of the catalog entity to trigger actions towards a site tied to an entity. - -```typescript - // packages/backend/src/plugins/permission.ts - import { azureSitesActionPermission } from '@backstage/plugin-azure-sites-common'; - ... - class TestPermissionPolicy implements PermissionPolicy { - async handle(request: PolicyQuery, user?: BackstageIdentityResponse): Promise { - if (isPermission(request.permission, azureSitesActionPermission)) { - return createCatalogConditionalDecision( - request.permission, - catalogConditions.isEntityOwner({ - claims: user?.identity.ownershipEntityRefs ?? [], - }), - ); - } - ... - return { - result: AuthorizeResult.ALLOW, - }; - } - ... - } -``` diff --git a/.changeset/tidy-cooks-mixed.md b/.changeset/tidy-cooks-mixed.md deleted file mode 100644 index a72f1ee0df..0000000000 --- a/.changeset/tidy-cooks-mixed.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@backstage/plugin-azure-sites-backend': minor ---- - -**BREAKING**: `catalogApi` and `permissionsApi` are now a requirement to be passed through to the `createRouter` function. - -You can fix the typescript issues by passing through the required dependencies like the below `diff` shows: - -```diff - import { - createRouter, - AzureSitesApi, - } from '@backstage/plugin-azure-sites-backend'; - import { Router } from 'express'; - import { PluginEnvironment } from '../types'; - - export default async function createPlugin( - env: PluginEnvironment, - ): Promise { -+ const catalogClient = new CatalogClient({ -+ discoveryApi: env.discovery, -+ }); - - return await createRouter({ - logger: env.logger, - azureSitesApi: AzureSitesApi.fromConfig(env.config), -+ catalogApi: catalogClient, -+ permissionsApi: env.permissions, - }); - } -``` diff --git a/.changeset/tidy-cycles-obey.md b/.changeset/tidy-cycles-obey.md deleted file mode 100644 index 4a002269e1..0000000000 --- a/.changeset/tidy-cycles-obey.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch -'@backstage/plugin-scaffolder': patch ---- - -Remove unused deps diff --git a/.changeset/tidy-peaches-nail.md b/.changeset/tidy-peaches-nail.md deleted file mode 100644 index d044a6bfaa..0000000000 --- a/.changeset/tidy-peaches-nail.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Clusters in the app-config can now specify a `title` property for human readability. diff --git a/.changeset/tiny-books-destroy.md b/.changeset/tiny-books-destroy.md new file mode 100644 index 0000000000..2516080ec5 --- /dev/null +++ b/.changeset/tiny-books-destroy.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Add index for original value in search table for faster entity facet response diff --git a/.changeset/tiny-bugs-enjoy.md b/.changeset/tiny-bugs-enjoy.md new file mode 100644 index 0000000000..963ccc2a1f --- /dev/null +++ b/.changeset/tiny-bugs-enjoy.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-adr-backend': patch +--- + +Migrated `DefaultAdrCollatorFactory` to support new auth services. diff --git a/.changeset/tiny-donuts-drive.md b/.changeset/tiny-donuts-drive.md deleted file mode 100644 index aadac7a276..0000000000 --- a/.changeset/tiny-donuts-drive.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Backstage will log a warning whenever duplicate cluster names are detected -- -even if clusters sharing the same name come from separate locators. diff --git a/.changeset/tiny-kiwis-know.md b/.changeset/tiny-kiwis-know.md deleted file mode 100644 index add4736527..0000000000 --- a/.changeset/tiny-kiwis-know.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated dependencies in frontend plugin templates diff --git a/.changeset/tough-drinks-scream.md b/.changeset/tough-drinks-scream.md deleted file mode 100644 index 3d2f154016..0000000000 --- a/.changeset/tough-drinks-scream.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@backstage/plugin-cloudbuild': minor ---- - -Changed build list view to automatically filter builds based on repository name matching component-info's metadata.name. -Added optional `google.com/cloudbuild-repo-name` annotation which allows you to specify a different repository to filter on. -Added optional `google.com/cloudbuild-trigger-name` annotation which allows you to filter based on a trigger name instead of a repo name. -Updated the ReadMe with information about the filtering and some other minor verbiage updates. -Changed `substitutions.BRANCH_NAME` to `substitutions.REF_NAME` so that the Ref field is populated properly. -Added optional `google.com/cloudbuild-location` annotation which allows you to specify the Cloud Build location of your builds. Default is global scope. -Changed build list view to show builds in a specific location if the location annotation is used. -Updated ReadMe with information about the use of the location filtering. diff --git a/.changeset/tricky-months-hug.md b/.changeset/tricky-months-hug.md new file mode 100644 index 0000000000..ae1bd85532 --- /dev/null +++ b/.changeset/tricky-months-hug.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch +'@backstage/plugin-auth-backend-module-aws-alb-provider': patch +'@backstage/plugin-auth-backend-module-gcp-iap-provider': patch +'@backstage/plugin-auth-node': patch +--- + +Fix issue with `providerInfo` not being set properly for some proxy providers, by making `providerInfo` an explicit optional return from `authenticate` diff --git a/.changeset/twelve-berries-cross.md b/.changeset/twelve-berries-cross.md new file mode 100644 index 0000000000..9862f465d2 --- /dev/null +++ b/.changeset/twelve-berries-cross.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Make sure to not filter out schemas in `createConfigSecretEnumerator` diff --git a/.changeset/twelve-hounds-know.md b/.changeset/twelve-hounds-know.md deleted file mode 100644 index 3c95c71ddb..0000000000 --- a/.changeset/twelve-hounds-know.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': minor ---- - -Use more distinguishable icons for link (`Link`) and text output (`Description`). diff --git a/.changeset/twelve-pens-rescue.md b/.changeset/twelve-pens-rescue.md deleted file mode 100644 index 9d40fb2851..0000000000 --- a/.changeset/twelve-pens-rescue.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch -'@backstage/frontend-app-api': patch -'@backstage/core-compat-api': patch ---- - -Allow external route refs in the new system to have a `defaultTarget` pointing to a route that it'll resolve to by default if no explicit bindings were made by the adopter. diff --git a/.changeset/twelve-shirts-buy.md b/.changeset/twelve-shirts-buy.md deleted file mode 100644 index 6183c7dabd..0000000000 --- a/.changeset/twelve-shirts-buy.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-node': patch ---- - -Add support for `onProcessingError` handler at the catalog plugin (new backend system). - -You can use `setOnProcessingErrorHandler` at the `catalogProcessingExtensionPoint` -as replacement for - -```ts -catalogBuilder.subscribe({ - onProcessingError: hander, -}); -``` diff --git a/.changeset/twelve-weeks-march.md b/.changeset/twelve-weeks-march.md deleted file mode 100644 index 4d9fff5b34..0000000000 --- a/.changeset/twelve-weeks-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch ---- - -Fix issue where `ui:schema` was replaced with an empty object if `dependencies` is defined diff --git a/.changeset/twenty-taxis-mate.md b/.changeset/twenty-taxis-mate.md deleted file mode 100644 index 65ed158e9b..0000000000 --- a/.changeset/twenty-taxis-mate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-compat-api': patch ---- - -Plugins converted by `convertLegacyApp` now have their `routes` and `externalRoutes` included as well, allowing them to be used to bind external routes in configuration. diff --git a/.changeset/two-coats-smile.md b/.changeset/two-coats-smile.md deleted file mode 100644 index 65abb7a1eb..0000000000 --- a/.changeset/two-coats-smile.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Updated the backend module template to make the module instance the package default export. diff --git a/.changeset/two-geese-explain.md b/.changeset/two-geese-explain.md deleted file mode 100644 index 12ae307cfe..0000000000 --- a/.changeset/two-geese-explain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Fixed an issue that would cause an invalid `__backstage-autodetected-plugins__.js` to be written when using experimental module discovery. diff --git a/.changeset/two-planets-beam.md b/.changeset/two-planets-beam.md new file mode 100644 index 0000000000..d500d22853 --- /dev/null +++ b/.changeset/two-planets-beam.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-common': patch +'@backstage/plugin-kubernetes-react': patch +--- + +Add support to fetch data for Daemon Sets and display an accordion in the same way as with Deployments diff --git a/.changeset/two-singers-learn.md b/.changeset/two-singers-learn.md deleted file mode 100644 index f5c2a78ab0..0000000000 --- a/.changeset/two-singers-learn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-devtools': patch ---- - -Added alpha support for the New Frontend System (Declarative Integration) diff --git a/.changeset/two-snails-fry.md b/.changeset/two-snails-fry.md new file mode 100644 index 0000000000..979134f98e --- /dev/null +++ b/.changeset/two-snails-fry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-badges-backend': patch +--- + +Migrated to support new auth services. diff --git a/.changeset/unlucky-jobs-report.md b/.changeset/unlucky-jobs-report.md new file mode 100644 index 0000000000..4eab12d53e --- /dev/null +++ b/.changeset/unlucky-jobs-report.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-permission-backend': patch +--- + +Migrated to use the new auth services introduced in [BEP-0003](https://github.com/backstage/backstage/blob/master/beps/0003-auth-architecture-evolution/README.md). + +The `createRouter` function now accepts `auth`, `httpAuth` and `userInfo` options. Theses are used internally to support the new backend system, and can be ignored. diff --git a/.changeset/unlucky-lizards-suffer.md b/.changeset/unlucky-lizards-suffer.md new file mode 100644 index 0000000000..15862e1736 --- /dev/null +++ b/.changeset/unlucky-lizards-suffer.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-cicd-statistics-module-gitlab': patch +'@backstage/plugin-github-pull-requests-board': patch +--- + +Align `p-limit` dependency version to v3 diff --git a/.changeset/unlucky-pens-search.md b/.changeset/unlucky-pens-search.md deleted file mode 100644 index 4786c14691..0000000000 --- a/.changeset/unlucky-pens-search.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -When using node 20+ the `scaffolder-backend` will now throw an error at startup if the `--no-node-snapshot` option was -not provided to node. diff --git a/.changeset/unlucky-wasps-tan.md b/.changeset/unlucky-wasps-tan.md deleted file mode 100644 index 97813cb416..0000000000 --- a/.changeset/unlucky-wasps-tan.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-bitbucket': patch ---- - -Enhanced the pull request action to allow for adding new content to the PR as described in this issue #21762 diff --git a/.changeset/violet-rocks-rescue.md b/.changeset/violet-rocks-rescue.md new file mode 100644 index 0000000000..91fbcdd871 --- /dev/null +++ b/.changeset/violet-rocks-rescue.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend-node': patch +--- + +Exports `QueryTranslator`, `QueryRequestOptions` and `SearchEngine` types. These new types were extracted from the `@backstage/plugin-search-common` package and the `token` property was deprecated in favor of the a new credentials one. diff --git a/.changeset/warm-maps-scream.md b/.changeset/warm-maps-scream.md deleted file mode 100644 index 3ea5d93b03..0000000000 --- a/.changeset/warm-maps-scream.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-devtools': patch -'@backstage/plugin-linguist': patch ---- - -Updated imports from named to default imports to help with the Material UI v4 to v5 migration diff --git a/.changeset/weak-flowers-repeat.md b/.changeset/weak-flowers-repeat.md deleted file mode 100644 index d1705343bc..0000000000 --- a/.changeset/weak-flowers-repeat.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-gitea': patch ---- - -- Fix issue for infinite loop when repository already exists -- Log the root cause of error reported by `checkGiteaOrg` diff --git a/.changeset/weak-news-jam.md b/.changeset/weak-news-jam.md deleted file mode 100644 index a1f44082da..0000000000 --- a/.changeset/weak-news-jam.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch ---- - -Fix bug that erroneously caused a separator or a 0 to render in the TemplateCard for Templates with empty links diff --git a/.changeset/wet-emus-work.md b/.changeset/wet-emus-work.md deleted file mode 100644 index 413670a325..0000000000 --- a/.changeset/wet-emus-work.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-compat-api': patch ---- - -collectLegacyRoutes throws in case invalid element is found diff --git a/.changeset/wet-lions-crash.md b/.changeset/wet-lions-crash.md deleted file mode 100644 index 795e60588d..0000000000 --- a/.changeset/wet-lions-crash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-puppetdb': patch ---- - -Added `latest_report_status` parameter from the PuppetDB node api and added it as a tag to the nodes. The status is valuable information as it displays which nodes are compliant to your configuration and which ones are failing are making changes. diff --git a/.changeset/wet-sheep-reply.md b/.changeset/wet-sheep-reply.md new file mode 100644 index 0000000000..27635b133e --- /dev/null +++ b/.changeset/wet-sheep-reply.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Allow the `spec.target` field to be searchable in the catalog table for locations. Previously, only the `spec.targets` field was be searchable. This makes locations generated by providers such as the `GithubEntityProvider` searchable in the catalog table. [#23098](https://github.com/backstage/backstage/issues/23098) diff --git a/.changeset/wicked-dolphins-wash.md b/.changeset/wicked-dolphins-wash.md deleted file mode 100644 index 9258913c41..0000000000 --- a/.changeset/wicked-dolphins-wash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -On LocalKubectlProxyClusterLocator, when resolving localhost, IPv4 address is placed before IPv6 address, ignoring the order from the DNS resolver. This change is necessary since by default kubectl proxy listen on IPv4 diff --git a/.changeset/wicked-elephants-scream.md b/.changeset/wicked-elephants-scream.md deleted file mode 100644 index f002a48ba8..0000000000 --- a/.changeset/wicked-elephants-scream.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-devops': patch ---- - -Prefer `dev.azure.com/build-definition` annotation when it is provided, as it is more specific than `dev.azure.com/project-repo`. This can also be used as a filter for mono-repos. diff --git a/.changeset/wild-owls-doubt.md b/.changeset/wild-owls-doubt.md deleted file mode 100644 index 84abffb159..0000000000 --- a/.changeset/wild-owls-doubt.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -The built-in module list has been trimmed down when using the new Backend System. Provider specific modules should now be installed with `backend.add` to provide additional actions to the scaffolder. These modules are as follows: - -- `@backstage/plugin-scaffolder-backend-module-github` -- `@backstage/plugin-scaffolder-backend-module-gitlab` -- `@backstage/plugin-scaffolder-backend-module-bitbucket` -- `@backstage/plugin-scaffolder-backend-module-gitea` -- `@backstage/plugin-scaffolder-backend-module-gerrit` -- `@backstage/plugin-scaffolder-backend-module-confluence-to-markdown` -- `@backstage/plugin-scaffolder-backend-module-cookiecutter` -- `@backstage/plugin-scaffolder-backend-module-rails` -- `@backstage/plugin-scaffolder-backend-module-sentry` -- `@backstage/plugin-scaffolder-backend-module-yeoman` diff --git a/.changeset/wise-flies-laugh.md b/.changeset/wise-flies-laugh.md deleted file mode 100644 index 4b31b4e9ba..0000000000 --- a/.changeset/wise-flies-laugh.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-home': patch ---- - -Added filter support for HomePageVisitedByType in order to enable filtering entities from the list diff --git a/.changeset/wise-papayas-cough.md b/.changeset/wise-papayas-cough.md deleted file mode 100644 index 955e7fefcc..0000000000 --- a/.changeset/wise-papayas-cough.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Add a config declaration for `workingDirectory` diff --git a/.changeset/young-flies-wash.md b/.changeset/young-flies-wash.md new file mode 100644 index 0000000000..dcedc9bb7c --- /dev/null +++ b/.changeset/young-flies-wash.md @@ -0,0 +1,35 @@ +--- +'@backstage/plugin-events-backend': minor +--- + +BREAKING CHANGE: Migrate `HttpPostIngressEventPublisher` and `eventsPlugin` to use `EventsService`. + +Uses the `EventsService` instead of `EventBroker` at `HttpPostIngressEventPublisher`, +dropping the use of `EventPublisher` including `setEventBroker(..)`. + +Now, `HttpPostIngressEventPublisher.fromConfig` requires `events: EventsService` as option. + +```diff + const http = HttpPostIngressEventPublisher.fromConfig({ + config: env.config, ++ events: env.events, + logger: env.logger, + }); + http.bind(eventsRouter); + + // e.g. at packages/backend/src/plugins/events.ts +- await new EventsBackend(env.logger) +- .setEventBroker(env.eventBroker) +- .addPublishers(http) +- .start(); + + // or for other kinds of setups +- await Promise.all(http.map(publisher => publisher.setEventBroker(eventBroker))); +``` + +`eventsPlugin` uses the `eventsServiceRef` as dependency. +Unsupported (and deprecated) extension point methods will throw an error to prevent unintended behavior. + +```ts +import { eventsServiceRef } from '@backstage/plugin-events-node'; +``` diff --git a/.changeset/young-ladybugs-decide.md b/.changeset/young-ladybugs-decide.md deleted file mode 100644 index 53284cbc37..0000000000 --- a/.changeset/young-ladybugs-decide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-scaffolder-node': patch ---- - -Add option to configure nunjucks with the `trimBlocks` and `lstripBlocks` options in the fetch:template action diff --git a/.changeset/young-rules-repeat.md b/.changeset/young-rules-repeat.md deleted file mode 100644 index 6fb17f0608..0000000000 --- a/.changeset/young-rules-repeat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/eslint-plugin': patch ---- - -Added new `@backstage/no-top-level-material-ui-4-imports` rule that forbids top level imports from Material UI v4 packages diff --git a/.eslintrc.js b/.eslintrc.js index 2df965ab73..01cad187be 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -23,8 +23,11 @@ module.exports = { 'notice/notice': [ 'error', { - // eslint-disable-next-line no-restricted-syntax - templateFile: path.resolve(__dirname, './scripts/copyright-header.txt'), + templateFile: path.resolve( + // eslint-disable-next-line no-restricted-syntax + __dirname, + './scripts/templates/copyright-header.txt' + ), onNonMatchingHeader: 'replace', }, ], diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 247ce66010..0000000000 --- a/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -**/api-report*.md linguist-generated=true -**/cli-report.md linguist-generated=true -**/knip-report.md linguist-generated=true diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 75416ace16..4d18392945 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -8,6 +8,7 @@ yarn.lock @backstage/maintainers @backstage-service */yarn.lock @backstage/maintainers @backstage-service /.changeset/*.md +/beps/0001-notifications-system @backstage/maintainers @backstage/notifications-maintainers /docs/assets/search @backstage/discoverability-maintainers /docs/features/search @backstage/discoverability-maintainers /docs/features/techdocs @backstage/techdocs-maintainers @@ -66,6 +67,8 @@ yarn.lock @backstage/maintainers @backst /plugins/linguist @backstage/maintainers @backstage/reviewers @awanlin /plugins/linguist-backend @backstage/maintainers @backstage/reviewers @awanlin /plugins/linguist-common @backstage/maintainers @backstage/reviewers @awanlin +/plugins/notifications @backstage/maintainers @backstage/notifications-maintainers +/plugins/notifications-* @backstage/maintainers @backstage/notifications-maintainers /plugins/octopus-deploy @backstage/maintainers @backstage/reviewers @jmezach /plugins/permission-* @backstage/permission-maintainers /plugins/playlist @backstage/maintainers @backstage/reviewers @kuangp @@ -76,6 +79,8 @@ yarn.lock @backstage/maintainers @backst /plugins/scaffolder-* @backstage/maintainers @backstage/reviewers @backstage/scaffolder-maintainers /plugins/search @backstage/discoverability-maintainers /plugins/search-* @backstage/discoverability-maintainers +/plugins/signals @backstage/maintainers @backstage/notifications-maintainers +/plugins/signals-* @backstage/maintainers @backstage/notifications-maintainers /plugins/sonarqube @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers /plugins/stack-overflow @backstage/discoverability-maintainers /plugins/stack-overflow-backend @backstage/discoverability-maintainers diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 5d979d5f22..a9cb54912a 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -3,13 +3,16 @@ labels: ['dependencies'], - extends: [ - 'config:best-practices', - ':gitSignOff', - 'default:pinDigestsDisabled', - ], + extends: ['config:best-practices', ':gitSignOff'], // do not pin dev dependencies, which are part of the best-practices preset - ignorePresets: [':pinDevDependencies', ':pinDigest'], + ignorePresets: [':pinDevDependencies', ':pinDigest', 'docker:pinDigests'], + + constraints: { + // TODO(freben): Remove this later; it addresses a temporary issue in corepack + // https://github.com/nodejs/corepack/issues/379 + // https://github.com/renovatebot/renovate/discussions/27465 + corepack: '0.24.1', + }, // the default limit are 10 PRs prConcurrentLimit: 20, @@ -42,5 +45,26 @@ matchSourceUrls: ['https://github.com/yarnpkg/berry'], enabled: false, }, + // ESM only majors, that we're not ready for yet + { + matchPackageNames: ['node-fetch'], + allowedVersions: '<3.0.0', + }, + { + matchPackageNames: ['inquirer', '@types/inquirer'], + allowedVersions: '<9.0.0', + }, + { + matchPackageNames: ['ora'], + allowedVersions: '<5.0.0', + }, + { + matchPackageNames: ['p-limit'], + allowedVersions: '<4.0.0', + }, + { + matchPackageNames: ['p-queue'], + allowedVersions: '<7.0.0', + }, ], } diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index eef70ff02c..f6cd52b284 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -5,6 +5,10 @@ on: repository_dispatch: types: [release-published] +env: + RELEASE_VERSION: v${{ github.event.client_payload.version }} + TAG_VERSION: ghcr.io/${{ github.repository_owner }}/backstage:${{ github.event.client_payload.version }} + jobs: build: runs-on: ubuntu-latest @@ -24,7 +28,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: path: backstage - ref: v${{ github.event.client_payload.version }} + ref: ${{ github.event.client_payload.version && env.RELEASE_VERSION || github.ref }} - name: use node.js ${{ matrix.node-version }} uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 @@ -61,10 +65,10 @@ jobs: with: context: './example-app' file: ./example-app/packages/backend/Dockerfile - push: ${{ (github.event_name == "repository_dispatch") && (github.event.action == "release-published") }} + push: ${{ (github.event_name == 'repository_dispatch') && (github.event.action == 'release-published') }} platforms: linux/amd64,linux/arm64 tags: | ghcr.io/${{ github.repository_owner }}/backstage:latest - ghcr.io/${{ github.repository_owner }}/backstage:${{ github.event.client_payload.version }} + ${{ github.event.client_payload.version && env.TAG_VERSION || '' }} labels: | org.opencontainers.image.description=Docker image generated from the latest Backstage release; this contains what you would get out of the box by running npx @backstage/create-app and building a Docker image from the generated source. This is meant to ease the process of evaluating Backstage for the first time, but also has the severe limitation that there is no way to install additional plugins relevant to your infrastructure. diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 621776d69b..d94373e9d1 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -66,6 +66,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/upload-sarif@47b3d888fe66b639e431abf22ebca059152f1eea # v3.24.5 with: sarif_file: results.sarif diff --git a/.github/workflows/sync_snyk-monitor.yml b/.github/workflows/sync_snyk-monitor.yml index 7ee4e72d38..c5374951d7 100644 --- a/.github/workflows/sync_snyk-monitor.yml +++ b/.github/workflows/sync_snyk-monitor.yml @@ -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@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/upload-sarif@47b3d888fe66b639e431abf22ebca059152f1eea # v3.24.5 with: sarif_file: snyk.sarif diff --git a/.github/workflows/uffizzi-preview.yaml b/.github/workflows/uffizzi-preview.yaml index 9db724fa96..3125504dc8 100644 --- a/.github/workflows/uffizzi-preview.yaml +++ b/.github/workflows/uffizzi-preview.yaml @@ -76,7 +76,7 @@ jobs: - name: Cache Manifests File if: ${{ steps.event.outputs.ACTION != 'closed' }} - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: manifests.rendered.yml key: ${{ steps.hash.outputs.MANIFESTS_FILE_HASH }} @@ -140,7 +140,7 @@ jobs: - name: Fetch cached Manifests File id: cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4 with: path: manifests.rendered.yml key: ${{ needs.cache-manifests-file.outputs.manifests-cache-key }} diff --git a/.github/workflows/verify_codeql.yml b/.github/workflows/verify_codeql.yml index 7c7ef286db..dabbff24db 100644 --- a/.github/workflows/verify_codeql.yml +++ b/.github/workflows/verify_codeql.yml @@ -55,7 +55,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/init@47b3d888fe66b639e431abf22ebca059152f1eea # v3.24.5 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@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/autobuild@47b3d888fe66b639e431abf22ebca059152f1eea # v3.24.5 # ℹ️ 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@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/analyze@47b3d888fe66b639e431abf22ebca059152f1eea # v3.24.5 diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index 70fb16ac48..e12aba2e0e 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -51,7 +51,7 @@ jobs: - run: yarn build-storybook - - uses: chromaui/action@c9067691aca4a28d6fbb40d9eea6e144369fbcae # v10 + - uses: chromaui/action@fd0e276c344bab4dc69a023fdf89ffb9b79b3b31 # v11 with: token: ${{ secrets.GITHUB_TOKEN }} # projectToken intentionally shared to allow collaborators to run Chromatic on forks diff --git a/.prettierignore b/.prettierignore index c561036ebb..3a16bd1388 100644 --- a/.prettierignore +++ b/.prettierignore @@ -11,6 +11,7 @@ cli-report.md plugins/scaffolder-backend/sample-templates .vscode dist-types +.eslintrc.js # reduce the barrier for adopters to add themselves ADOPTERS.md diff --git a/ADOPTERS.md b/ADOPTERS.md index 8f3f93658b..fa6c3579d4 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -262,4 +262,5 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [Gynzy](https://gynzy.com) | [Stef Louwers](https://github.com/fhp) | We are building an internal developer portal to get an overview of all our software components. | | [Cielo](https://www.cielo.com.br) | [@Alex Silva](https://github.com/narokwq) | We are using as our Internal Developer Portal, it provides developers with the resources, information, and tools they need to build high-quality applications and adhere to organizational standards and security practices. | | [Giant Swarm](https://giantswarm.io) | [Lucas Weatherhog](https://github.com/weatherhog) | At Giant Swarm we are using Backstage as our internal developer portal. Heavily using the service catalog and the TechDocs plugin. Further looking into adopting functionalities of our Web UI into Backstage to have a single pane of glass for our core business, managing all our components, and helping developers to be more productive. | -| [WD Studios](https://wdstudios.tech) | [Mikael Aboagye](https://github.com/JailbreakPapa) | We are using Backstage as our main internal developer portal for our Programmers and Studio Partners. It's really proven its worth at our studio with on-boarding new programmers! +| [WD Studios](https://wdstudios.tech) | [Mikael Aboagye](https://github.com/JailbreakPapa) | We are using Backstage as our main internal developer portal for our Programmers and Studio Partners. It's really proven its worth at our studio with on-boarding new programmers! | +| [Fortnox](https://www.fortnox.se) | [@magnusp](https://github.com/magnusp) | With Backstage we consolidate our internal tools into a single pane of glass and let the catalog drive our user interface. Our software templates onboard our services and teams onto Backstage, and with Techdocs we are letting our developers get back in control of their own documentation. | diff --git a/OWNERS.md b/OWNERS.md index e9e14aaf83..4ef6b2ccab 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -73,17 +73,14 @@ Team: @backstage/permission-maintainers Scope: The Permission Framework and plugins integrating with the permission framework -| Name | Organization | Team | GitHub | Discord | -| -------------------- | ------------ | --------------- | ----------------------------------------------- | ---------------- | -| Ainhoa Larumbe | Spotify | Imaginary Goats | [ainhoaL](http://github.com/ainhoaL) | ainhoa#8085 | -| Claire Casey | Spotify | Imaginary Goats | [clairelcasey](http://github.com/clairelcasey) | clairecasey#2710 | -| Eric Peterson | Spotify | Imaginary Goats | [iamEAP](http://github.com/iamEAP) | iamEAP#3058 | -| Harry Hogg | Spotify | Imaginary Goats | [HHogg](http://github.com/HHogg) | simplex#3451 | -| Joon Park | Spotify | Imaginary Goats | [Joonpark13](http://github.com/Joonpark13) | Sixpool#5060 | -| Lynette Lopez | Spotify | Imaginary Goats | [lynettelopez](https://github.com/lynettelopez) | lynettelopez | -| Mike Lewis | Spotify | Imaginary Goats | [mtlewis](http://github.com/mtlewis) | mtlewis#3658 | -| Tim Hansen | Spotify | Imaginary Goats | [timbonicus](http://github.com/timbonicus) | timbonicus#6871 | -| Vincenzo Scamporlino | Spotify | Imaginary Goats | [vinzscam](http://github.com/vinzscam) | vinzscam#6944 | +| Name | Organization | Team | GitHub | Discord | +| -------------------- | ------------ | --------------- | ------------------------------------------ | ------------- | +| Ainhoa Larumbe | Spotify | Imaginary Goats | [ainhoaL](http://github.com/ainhoaL) | ainhoa#8085 | +| Eric Peterson | Spotify | Imaginary Goats | [iamEAP](http://github.com/iamEAP) | iamEAP#3058 | +| Harry Hogg | Spotify | Imaginary Goats | [HHogg](http://github.com/HHogg) | simplex#3451 | +| Joon Park | Spotify | Imaginary Goats | [Joonpark13](http://github.com/Joonpark13) | Sixpool#5060 | +| Mike Lewis | Spotify | Imaginary Goats | [mtlewis](http://github.com/mtlewis) | mtlewis#3658 | +| Vincenzo Scamporlino | Spotify | Imaginary Goats | [vinzscam](http://github.com/vinzscam) | vinzscam#6944 | ### TechDocs @@ -107,15 +104,39 @@ Scope: The TechDocs plugin and related tooling These incubating project areas have shared ownership with @backstage/maintainers. +### Community Plugins + +Team: @backstage/community-plugins-maintainers + +Scope: Tooling and Community Repo Maintainers for the Backstage [Community Plugins repository](https://github.com/backstage/community-plugins) + +| Name | Organization | GitHub | Discord | +| -------------------- | ------------ | ------------------------------------------- | ------------ | +| Bethany Griggs | Red Hat | [BethGriggs](https://github.com/BethGriggs) | `bethgriggs` | +| Tomas Kral | Red Hat | [kadel](https://github.com/kadel) | `tomkral` | +| André Wanlin | Spotify | [awanlin](https://github.com/awanlin) | `ahhhndre` | +| Philipp Hugenroth | Spotify | [tudi2d](https://github.com/tudi2d) | `tudi2d` | +| Vincenzo Scamporlino | Spotify | [vinzscam](https://github.com/vinzscam) | `vinzscam` | + +### Notifications + +Team: @backstage/notifications-maintainers + +Scope: The Notifications and Signals plugins and libraries + +| Name | Organization | GitHub | Discord | +| ----------- | ------------ | ------------------------------------------- | --------- | +| Marek Libra | RedHat | [mareklibra](https://github.com/mareklibra) | `marekli` | + ### OpenAPI Tooling Team: @backstage/openapi-tooling-maintainers Scope: Tooling for frontend and backend schema-first OpenAPI development. -| Name | Organization | GitHub | Discord | -| -------------- | ------------ | --------------------------------------- | ------------- | -| Aramis Sennyey | | [sennyeya](https://github.com/sennyeya) | `Aramis#7984` | +| Name | Organization | GitHub | Discord | +| -------------- | ------------ | ----------------------------------------------------- | ------------- | +| Aramis Sennyey | | [aramissennyeydd](https://github.com/aramissennyeydd) | `Aramis#7984` | ### Scaffolder @@ -143,7 +164,7 @@ Scope: The Scaffolder frontend and backend plugins, and related tooling. | Alex Crome | | [afscrome](https://github.com/afscrome) | `afscrome` | | Andre Wanlin | Spotify | [awanlin](https://github.com/awanlin) | `ahhhndre` | | Andrew Thauer | Wealthsimple | [andrewthauer](https://github.com/andrewthauer) | `andrewthauer#3060` | -| Aramis Sennyey | | [sennyeya](https://github.com/sennyeya) | `Aramis#7984` | +| Aramis Sennyey | | [aramissennyeydd](https://github.com/aramissennyeydd) | `Aramis#7984` | | Brian Fletcher | Roadie.io | [punkle](https://github.com/punkle) | `Brian Fletcher#7051` | | Carlos Esteban Lopez Jaramillo | VMWare | [luchillo17](https://github.com/luchillo17) | `luchillo17#8777` | | David Tuite | Roadie.io | [dtuite](https://github.com/dtuite) | `David Tuite (roadie.io)#1010` | diff --git a/app-config.yaml b/app-config.yaml index c53a6475f4..7950768350 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -32,6 +32,12 @@ backend: # auth: # keys: # - secret: ${BACKEND_SECRET} + + auth: + # TODO: once plugins have been migrated we can remove this, but right now it + # is require for the backend-next to work in this repo + dangerouslyDisableDefaultAuthPolicy: true + baseUrl: http://localhost:7007 listen: port: 7007 @@ -236,7 +242,7 @@ catalog: - Domain - Location providers: - openapi: + backstageOpenapi: plugins: - catalog - search @@ -391,8 +397,9 @@ auth: clientId: ${AUTH_ATLASSIAN_CLIENT_ID} clientSecret: ${AUTH_ATLASSIAN_CLIENT_SECRET} scopes: ${AUTH_ATLASSIAN_SCOPES} - myproxy: - development: {} + myproxy: {} + guest: {} + costInsights: engineerCost: 200000 engineerThreshold: 0.5 diff --git a/beps/0001-notifications-system/README.md b/beps/0001-notifications-system/README.md index e3507d05fa..e071b36a06 100644 --- a/beps/0001-notifications-system/README.md +++ b/beps/0001-notifications-system/README.md @@ -96,7 +96,6 @@ The notification backend stores notification using the [database service](https: - ID - Read date -- Done date - Saved status - Creation date - Updated date (optional, for scoped notifications) @@ -104,7 +103,8 @@ The notification backend stores notification using the [database service](https: - Title - Description (optional) - Origin - - Link + - Link (optional) + - Additional links (optional) - Recipients - Severity (optional, default normal) - Topic (optional) @@ -113,6 +113,10 @@ The notification backend stores notification using the [database service](https: The recipients is **not** a list of users, but rather a filter that describes who should receive the notification. It must be possible to evaluate this filter in a database query, so that we can efficiently fetch all notifications for a given user. The same filter will also be used by the signal backend to determine which users should receive a signal. +The read date is a timestamp of marking the notifications as read by the user. If missing, the notification is still unread. + +The saved status is a timestamp indicating when/if the user marked the notification for better visibility in the future (to "pin" the message). Can be undefined. + The title is mandatory human-readable text shortly describing the notifications. The description is an optional human-readable text providing more details to the user. @@ -143,6 +147,8 @@ The link is a relative or absolute URL. As an example, it can be used: - by an external system to request an action within an asynchronous task - by a BE plugin to provide link to other part of the Backstage UI (i.e. to the Catalog) +The additional links are an array of title-URL pairs. They can represent immediate actions on the notification (i.e. yes-no) or lead the user to additional details. + The `notification-backend` does not provide any new permissions, since creating notifications can only be done by other backend plugins, while reading notifications can only be done by the authenticated user. It is possible that we want to add a permissions for reading notifications, in particular for admin and impersonation use cases, but that is not part of this proposal or the initial implementation. The `notification-backend` shall provide necessary parameters for paging and filtering notifications from the frontend. @@ -228,7 +234,7 @@ interface NotificationService { Each notification is always routed to individual users unless it's a broadcast. The `notification-backend` will figure out which users will receive a notification based on the `recipients` parameter, resolving it to the concrete list of users at the time of sending the notification. -Each notification contains a `title` and a `link` for user to see further information. The `created`, `id`, `read` and `saved` properties are handled by the backend based and cannot be changed during the notification creation. +Each notification contains a human readable `title`, `origin` and optionally `link` for additional details. The `created`, `id`, `read` and `saved` properties are handled by the backend based and cannot be passed during the notification creation. Calling `sendNotification` should never throw an error so that it doesn't block the current processing. Notifications should be considered as second-level citizens that are not critical if not delivered. @@ -273,37 +279,31 @@ Example signal payload for a new notification: Notification frontend shows users their own notifications in its own page and the number of unread notifications in the main menu item. -By default, notifications that are `undone` will be shown in the notifications view. The notification `read` status is indicated by the UI. +Notifications are set to `read` when the `Mark as read` action is triggered by the user (bulk or single). -Notifications are set to `read` when the notification link is opened or the notification is set as `done` by the user. +Notifications can be saved for better visibility in the future. -Notifications can be set to `done` by the user, and they are filtered out of the main view. +Notifications can be filtered by `read`, `saved`, `content` (text search in title or description), `created` (since multiple predefined options) and `severity`. -Notifications can be saved for later use by the user. - -Notifications can be filtered by their `read`, `done` and `saved` statuses. - -Notifications are displayed in pages. - -User can search for notifications based on their title and description. +Notifications are displayed in pages. To do so, the backend needs to implement filtering and sorting. The following frontend API is added as part of this proposal. #### `NotificationsApi` ```ts -export type NotificationType = 'undone' | 'done' | 'saved'; +export type NotificationSeverity = 'critical' | 'high' | 'normal' | 'low'; export type GetNotificationsOptions = { - type?: NotificationType; offset?: number; limit?: number; search?: string; + createdSince?: Date; + severity?: NotificationSeverity; }; export type NotificationUpdateOptions = { ids: string[]; - done?: boolean; read?: boolean; saved?: boolean; }; @@ -358,7 +358,7 @@ interface SignalApi { - Replace absent signal service with long polling. This requires changes to the `signals` plugin as well. - Render dynamic values with various different React elements such as the `EntityRefLink` for entity references (for example `{{ user:default/john.doe }}`) in the notification payload -- Handle `link` values that use route references. For example instead hard-coding link to `/catalog/default/component/artist-web` it should be possible to use `catalogPlugin.catalogEntity` route reference as a link of the notification. This should also allow using parameters to be passed to the route reference +- Handle `link` values that use route references. For example instead hard-coding link to `/catalog/default/component/artist-web` it should be possible to use `catalogPlugin.catalogEntity` route reference as a link of the notification. This should also allow using parameters to be passed to the route reference. Links to external systems are still supported. - Add support for `analyticsApi` to notification actions like marking notifications done, saved or opening links in the notifications - Add support for user settings to control how notifications are shown to the user and which notifications user wants to receive. This should also include support for different `NotificationProcessor`s that can send notification to external systems - Add a sound to be played when notification is received diff --git a/beps/0003-auth-architecture-evolution/README.md b/beps/0003-auth-architecture-evolution/README.md index dc475fa14d..403390e567 100644 --- a/beps/0003-auth-architecture-evolution/README.md +++ b/beps/0003-auth-architecture-evolution/README.md @@ -68,9 +68,9 @@ Two new backend service interfaces are introduced to support these new features. The proposed design leaves the decision for how different endpoints are protected to the implementation of the plugin backends themselves. This includes whether particular routes should allow anonymous access, access from users authenticated via a cookie, or perhaps only allow access from other plugin backends and external services. This means that integrators do not need to - and do not have the ability to - configure access controls of individual endpoints, except for what the permission system already provides, and what is made available through static configuration or extension points. -In order to allow for cookie-based authentication of incoming user requests, the `auth` plugin backend is extended to be able to issue user tokens with reduced scope, which in turn integrate with the new `AuthService` and `HttpAuthService`. The ability to use cookie auth for requests is an opt-in per route and is only be permitted for read methods (`GET`, `HEAD`, `OPTIONS`). The actual implementation of cookie-based flows will be up to each plugin, but with significant help from the new auth service interfaces. +To ensure a secure-by-default design, there is a default access control policy that applies to all plugin routes, known as the "default auth policy". This policy is to only allow access from authenticated users and services, and is implemented in the `HttpRouterService` interface. In order to allow either unauthenticated access or cookie-based access, a plugin must opt-out of the default auth policy for specific path prefixes, effectively leaving the access control implementation to the plugin itself. This is done through the new `addAuthPolicy` method that is added to the `HttpRouterService` interface. -In order to allow either unauthenticated access or cookie-based access, a plugin must explicitly opt-in the specific path prefixes that these should be available at. This is done through a new method that is added to the `HttpRouterService` interface. +In order to allow for cookie-based authentication of incoming user requests, the `AuthService` is able to issue user tokens with limited scope. These limited scope tokens can still be used to fetch user information and in on-behalf-of service calls, but they are rejected by the default auth policy. The `HttpAuthService` provides a standardized way of handling cookies, which integrates with the `'user-cookie'` auth policy. The limited tokens can also be used in other contexts where it is beneficial to avoid storing full user credentials, but instead use credentials that can be upgraded in a controlled manner, such as scaffolder tasks. The `AuthService` implementation can choose to have a longer expiry of the limited tokens compared to the full user tokens, but this is not a requirement. For service-to-service communication we will move away from reusing user tokens in upstream requests. We will instead implement an "On-Behalf-Of" flow where incoming user credentials are encapsulated in a service token for the upstream request. In line with this the new auth service interfaces will aim to make it difficult to directly forward credentials from incoming requests, and instead encourage that plugin backends issue new service credentials for upstream requests. @@ -98,7 +98,7 @@ export type BackstageUserPrincipal = { }; export type BackstageServicePrincipal = { - type: 'user'; + type: 'service'; // Exact format TBD, possibly 'plugin:' or 'external:' subject: string; @@ -110,6 +110,8 @@ export type BackstageServicePrincipal = { export type BackstageCredentials = { $$type: '@backstage/BackstageCredentials'; + expiresAt?: Date; + principal: TPrincipal; }; @@ -120,13 +122,20 @@ export type BackstagePrincipalTypes = { }; export interface AuthService { - authenticate(token: string): Promise; + authenticate( + token: string, + options?: { + allowLimitedAccess?: boolean; + }, + ): Promise; isPrincipal( credentials: BackstageCredentials, type: TType, ): credentials is BackstageCredentials; + getNoneCredentials(): Promise>; + getOwnServiceCredentials(): Promise< BackstageCredentials >; @@ -135,6 +144,10 @@ export interface AuthService { onBehalfOf: BackstageCredentials; targetPluginId: string; }): Promise<{ token: string }>; + + getLimitedUserToken( + credentials: BackstageCredentials, + ): Promise<{ token: string; expiresAt: Date }>; } ``` @@ -149,6 +162,7 @@ export interface BackstageUserInfo { } export interface UserInfoService { + // The implementation of this method should support both regular and limited user credentials getUserInfo(credentials: BackstageCredentials): Promise; } ``` @@ -159,7 +173,7 @@ The `UserInfoService` is exported by `@backstage/auth-node`, and the initial imp > Open question: Should this instead be added to the `HttpAuthService`? It may fit a bit better there, but on the other hand it might make sense to add additional policies unrelated to authentication too, such as rate limiting. -The `HttpRouterService` interface will be extended with the ability to opt-out of the default protection of endpoints, enabling either cookie auth or unauthenticated access. +The `HttpRouterService` interface will be extended with the ability to opt-out of the default protection of endpoints, enabling cookie or unauthenticated access. ```ts export interface HttpRouterServiceAuthPolicy { @@ -201,7 +215,7 @@ export default createBackendPlugin({ This is expected to be the pattern for the vast majority of plugins. -#### A plugin with an endpoint that only allows cookie auth +#### A plugin with a cookie-based authentication endpoint ```ts export default createBackendPlugin({ @@ -209,11 +223,25 @@ export default createBackendPlugin({ register(env) { env.registerInit({ deps: { + auth: coreServices.auth, + httpAuth: coreServices.httpAuth, http: coreServices.httpRouter, }, - async init({ http }) { + async init({ auth, httpAuth, http }) { + const router = Router(); + + // Endpoint that sets the cookie for the user + router.get('/cookie', async (req, res) => { + const { expiresAt } = await httpAuth.issueUserCookie(res); + + res.json({ expiresAt: expiresAt.toISOString() }); + }); + + // Endpoint protected by cookie auth + router.get('/static', express.static(/* ... */)); + // The order of these two calls does not matter - http.use(await createRouter(/* ... */)); + http.use(router); http.addAuthPolicy({ path: '/static', allow: 'user-cookie', @@ -224,7 +252,7 @@ export default createBackendPlugin({ }); ``` -#### A plugin that allows both public access and cookie auth +#### A plugin that disabled the default auth policy and handles auth by itself ```ts export default createBackendPlugin({ @@ -236,15 +264,8 @@ export default createBackendPlugin({ }, async init({ http }) { http.use(await createRouter(/* ... */)); - http.addAuthPolicy({ path: '/', - allow: 'user-cookie', - }); - - // Unauthenticated access takes precedence, the /public endpoint does not require cookie auth - http.addAuthPolicy({ - path: '/public', allow: 'unauthenticated', }); }, @@ -274,16 +295,19 @@ export interface HttpAuthService { req: Request, options?: { allow?: Array; - allowedAuthMethods?: Array<'token' | 'cookie'>; + allowLimitedAccess?: boolean; }, ): Promise< BackstageCredentials >; - // The cookie issued by this method must be consumable by the `credentials` method, which in turn - // should create a credentials object that can be passed to the `getPluginRequestToken` method. - // The issued token must then in turn be a valid token for a user principal with full access. - issueUserCookie(res: Response): Promise; + issueUserCookie( + res: Response, + options?: { + // If credentials are not provided, they will be read from the request + credentials?: BackstageCredentials; + }, + ): Promise<{ expiresAt: Date }>; } ``` @@ -377,41 +401,22 @@ router.get('/read-data', (req, res) => { }); ``` -#### Issuing a cookie and allowing user cookie auth on a separate endpoint +#### Using limited user tokens to access user info ```ts -router.get('/cookie', async (req, res) => { - await httpAuth.issueUserCookie(res); // If this is a service call it'll throw - res.json({ ok: true }); +router.get('/read-data', (req, res) => { + const credentials = await httpAuth.credentials(req, { + allow: ['user'], + allowLimitedAccess: true, + }); + + const { userEntityRef, ownershipEntityRefs } = await userInfo.getUserInfo( + credentials, + ); + + console.log(`User ref=${userEntityRef} ownership=${ownershipEntityRefs}`); + // ... }); - -// Allowing cookie auth is a separate step where you call the addAuthPolicy method -// of the httpRouter API in your plugin setup code. -httpRouter.addAuthPolicy({ - path: '/static', - allow: 'user-cookie', -}); - -// Separate endpoint that serves static content, allowing user cookie auth as -// well as the default user and service auth methods -router.use('/static', express.static(staticContentDir)); -``` - -#### Passing along user identity from a cookie in an upstream request - -```ts -router.get( - '/read-data', - httpAuth.middleware({ allow: ['user-cookie'] }), - (req, res) => { - const credentials = await httpAuth.credentials(req, { allow: ['user'] }); - const { ownershipEntityRefs } = await userInfo.getUserInfo(credentials); - console.log( - `User ref=${credentials.userEntityRef} ownership=${ownershipEntityRefs}`, - ); - // ... - }, -); ``` ### Access Control Configuration @@ -425,6 +430,79 @@ backend: The exact impact that this has is that it disables the check in the `HttpRouterService` implementation, effectively applying the `unauthenticated` access level to all routes. Furthermore, it will also change `AuthService` so that the `getPluginRequestToken()` method will now issue an empty token for a `'none'` principal, rather than throwing. +### Token Details + +Note that this section is NOT normative. It illustrates the token shapes and major token flows that are involved in this proposal, but intentionally leaves out some low level details and is subject to change. + +#### Backstage Identity Tokens + +These are the regular tokens, commonly in short referred to just as "Backstage Tokens", that the auth backend generates for the user during sign-in. These are sent along with calls to backend plugins to identify the user. This BEP does not aim to change the shape of these tokens; this section is only here for informative purposes to convey what pieces of information that are at play. + +This is a JWT token. + +```yaml +# Header +{ + "alg": "ES256", + "kid": "4f5a0543-894a-4176-b0b7-699a7026b72f" +} +# Payload +{ + "iss": "http://localhost:7007/api/auth", + "sub": "user:default/example-user", + "ent": ["user:default/example-user", "group:default/my-team"], + "aud": "backstage", + "iat": 1708333140, + "exp": 1708336740 +} +``` + +The key ID is some random UUID. The `iss` (issuer) is the external base URL of your auth backend. Note that it uses the `ES256` asymmetric signature algorithm, and the auth backend exposes a JWKS that contains the public parts of the signing keys. The `sub` is an entity ref denoting who the signed in user is, and the `ent` is an array of entity refs that they claim ownership through. The `aud` (audience) is hardcoded to the string `"backstage"` always. + +#### Legacy Service Tokens + +These are the tokens that have been used for backend-to-backend communications before this BEP, and they will likely have changes as part of this work. + +This is a JWT token. + +```yaml +# Header +{ + "alg": "HS256" +} +# Payload +{ + "sub": "backstage-server", + "exp": 1708337056 +} +``` + +Note that unlike the identity token in the previous section, it uses the `HS256` symmetric signature algorithm. The key used is the first of the `backend.auth.keys` entries in your `app-config`, which is a shared secret among all backend plugins, enabling them to know that the caller is a legitimate one. But the token does not contain any information about who the caller is (it's just a generic `"backstage-server"`), nor who the receiver (audience) is. + +#### New Cookie Token Flow + +Some plugins serve static content that the browser engine requests directly, e.g. the TechDocs plugin. Those calls cannot easily have a bearer token attached to them. For these use cases a cookie based flow will be used instead. + +![Cookie token sequence diagram](./token-sequence-cookie.drawio.svg) + +The frontend part of the plugin ensures that a cookie endpoint on the backend part of the plugin is called before attempting to render static content. This endpoint validates the user's identity token and sets a corresponding cookie on the response. Subsequent requests for getting static content will automatically have this cookie attached to them by the browser. + +We intentionally do not specify here how the cookie token is acquired. It might be issued by the plugin itself or by the auth backend depending on how the architecture evolves, but this does not have any effect on plugin code. + +The cookie token contains the user's identifying information just like the identity cookie but is severely limited. It has the plugin itself specified as its audience. Thus, this token is not usable in any bearer token context, nor as a cookie toward any other plugin. + +#### New Service OBO Token Flow + +When a backend service needs to in turn make a request to another upstream service to fulfil the original request, it uses an On-Behalf-Of (OBO) token for the purpose. + +![OBO token sequence diagram](./token-sequence-obo.drawio.svg) + +The initial request in this picture is a frontend plugin, but the same concept applies if it is initiated by a service. The scaffolder backend in this example acquires an OBO token to be able to talk to the catalog plugin. + +We intentionally do not specify here how the OBO token is acquired. It might be issued by the plugin itself or by the auth backend depending on how the architecture evolves, but this does not have any effect on plugin code. + +The OBO token specifies the target service as its audience and itself as the subject, but additionally also contains the original caller's identifying information. Thus, the target service can identify who the nearest caller is but also apply permissions that are relevant to the original caller. The token is thus scoped to not be usable toward other backend plugins. + ## Release Plan The existing `IdentityService` and `TokenManagerService` will be deprecated and instead implemented in terms of the new `AuthService`. @@ -433,10 +511,11 @@ The new `AuthService` and `HttpAuthService` will need backwards compatible imple The backwards compatibility helpers will have the following behavior for each individual service call: -- `auth.authenticate(token)`: If the decoded token has the `backstage` audience, authenticate the token for a user principal using `identity.getIdentity(...)`, otherwise authenticate it using `tokenManager.authenticate(...)` and return a service principal with the subject `external:backstage-plugin`. If a no-op token manager is used then anything but a user token will be treated as a valid service token, which is consistent with existing behavior. +- `auth.authenticate(token, options)`: If the decoded token has the `backstage` audience, authenticate the token for a user principal using `identity.getIdentity(...)`, otherwise authenticate it using `tokenManager.authenticate(...)` and return a service principal with the subject `external:backstage-plugin`. If a no-op token manager is used then anything but a user token will be treated as a valid service token, which is consistent with existing behavior. The limited access option is ignored. - `auth.getOwnServiceCredentials()`: Use original implementation. - `auth.isPrincipal()`: Use original implementation. - `auth.getPluginRequestToken(options)`: Same behavior as the original implementation, using the `tokenManager` to issue service tokens, with the exception that a `none` principal will translate to an empty token rather than an error in order to properly forward calls with a no-op token manager. +- `auth.getLimitedUserToken(credentials)`: This is a no-op and returns the underlying user token with full scope. - `httpAuth.credentials(...)`: Use original implementation. - `httpAuth.issueUserCookie(...)`: This is a no-op as we do not need to support cookie auth in the legacy adapter. @@ -475,9 +554,9 @@ Cons: - Can be extremely confusing because the top-level middleware for more lax access will also apply to the more strict access levels. For example ```ts - const cookieRouter = Router(); - cookieRouter.use(rateLimit()); - http.useWithCookieAuthentication(cookieRouter); + const publicRouter = Router(); + publicRouter.use(rateLimit()); + http.useWithoutAuthentication(publicRouter); const mainRouter = Router(); // rateLimit() will apply here too @@ -487,7 +566,7 @@ Cons: This applied to any similar way of structuring this API, such as a single `.use()` method with additional options: ```ts -http.use(cookieRouter, { allow: ['user-cookie'] }); +http.use(publicRouter, { allow: ['unauthenticated'] }); ``` #### Separate configuration on different paths for `use` diff --git a/beps/0003-auth-architecture-evolution/token-sequence-cookie.drawio.svg b/beps/0003-auth-architecture-evolution/token-sequence-cookie.drawio.svg new file mode 100644 index 0000000000..b20b528c35 --- /dev/null +++ b/beps/0003-auth-architecture-evolution/token-sequence-cookie.drawio.svg @@ -0,0 +1,203 @@ + + + + + + + + +
+
+
+ cookie flow +
+
+
+
+ + cookie flow + +
+
+ + + + + +
+
+
+ Browser +
+
+
+
+ + Browser + +
+
+ + + + + + +
+
+
+ Techdocs +
+ Backend +
+
+
+
+ + Techdocs... + +
+
+ + + + + + +
+
+
+ GET /cookie +
+
+
+
+ + GET /cookie + +
+
+ + + + + +
+
+
+ set cookie on response +
+
+
+
+ + set cookie on response + +
+
+ + + + + +
+
+
+ browser static content requests +
+
+
+
+ + browser static content requests + +
+
+ + + + +
+
+
+ cookie token +
+
+
+
+ + cookie token + +
+
+ + + + +
+
+
+ cookie token +
+
+
+
+ + cookie token + +
+
+ + + + +
+
+
+ user identity token +
+
+
+
+ + user identity token + +
+
+ + + + + +
+
+
+ + acquire cookie token +
+ based on user token +
+
+
+
+
+
+ + acquire cookie token... + +
+
+ + + + +
+ + + + + Text is not SVG - cannot display + + + +
diff --git a/beps/0003-auth-architecture-evolution/token-sequence-obo.drawio.svg b/beps/0003-auth-architecture-evolution/token-sequence-obo.drawio.svg new file mode 100644 index 0000000000..f337f8b572 --- /dev/null +++ b/beps/0003-auth-architecture-evolution/token-sequence-obo.drawio.svg @@ -0,0 +1,203 @@ + + + + + + + + +
+
+
+ Browser +
+
+
+
+ + Browser + +
+
+ + + + + + +
+
+
+ Scaffolder +
+ Backend +
+
+
+
+ + Scaffolder... + +
+
+ + + + + + +
+
+
+ + acquire service obo token +
+ based on user token +
+
+
+
+
+
+ + acquire service obo token... + +
+
+ + + + + +
+
+
+ POST /tasks +
+
+
+
+ + POST /tasks + +
+
+ + + + + +
+
+
+ success +
+
+
+
+ + success + +
+
+ + + + + +
+
+
+ Catalog +
+ Backend +
+
+
+
+ + Catalog... + +
+
+ + + + + + +
+
+
+ GET /entities/... +
+
+
+
+ + GET /entities/... + +
+
+ + + + + +
+
+
+ template entity +
+
+
+
+ + template entity + +
+
+ + + + +
+
+
+ user identity token +
+
+
+
+ + user identity token + +
+
+ + + + +
+
+
+ service obo token +
+
+
+
+ + service obo token + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
diff --git a/beps/0004-scaffolder-task-idempotency/README.md b/beps/0004-scaffolder-task-idempotency/README.md index a7e592af39..03569de3d6 100644 --- a/beps/0004-scaffolder-task-idempotency/README.md +++ b/beps/0004-scaffolder-task-idempotency/README.md @@ -4,7 +4,8 @@ status: provisional authors: - 'bnechyporenko@bol.com' - 'benjaminl@spotify.com' -owners: +owners: + - @backstage/scaffolder-maintainers project-areas: - scaffolder creation-date: 2024-01-31 @@ -153,7 +154,7 @@ export function createGithubRepoCreateAction(options: { username: owner, }); - await ctx.checkpoint('v1.task.checkpoint.repo.creation', async () => { + await ctx.checkpoint('repo.creation', async () => { const repoCreationPromise = user.data.type === 'Organization' ? client.rest.repos.createInOrg({ @@ -168,19 +169,16 @@ export function createGithubRepoCreateAction(options: { }); if (secrets) { - await ctx.checkpoint( - 'v1.task.checkpoint.repo.create.variables', - async () => { - for (const [key, value] of Object.entries(repoVariables ?? {})) { - await client.rest.actions.createRepoVariable({ - owner, - repo, - name: key, - value: value, - }); - } - }, - ); + await ctx.checkpoint('repo.create.variables', async () => { + for (const [key, value] of Object.entries(repoVariables ?? {})) { + await client.rest.actions.createRepoVariable({ + owner, + repo, + name: key, + value: value, + }); + } + }); } ctx.output('remoteUrl', newRepo.clone_url); @@ -204,7 +202,7 @@ Checkpoints will allow action authors to create actions where code paths are ign This will be provided on a context object and action of author provide a key and a callback. ```typescript -await ctx.checkpoint('v1.task.checkpoint.repo.creation', async () => { +await ctx.checkpoint('repo.creation', async () => { const { repoUrl } = await client.rest.Repository.create({}); return { repoUrl }; }); @@ -215,7 +213,7 @@ It's going look like: ```json { - "v1.task.checkpoint.repo.creation": { + "repo.creation": { "status": "success", "result": { "repoUrl": "https://github.com/backstage/backstage.git" @@ -224,6 +222,43 @@ It's going look like: } ``` +or a failed attempt as: + +```json +{ + "repo.creation": { + "status": "failed", + "reason": "Namespace is not valid" + } +} +``` + +DatabaseTaskStore will provide two extra methods `saveTaskState` and `getTaskState`. The type of state in API will be +represented as `JsonObject`. + +Task state will be stored in the extra column `state` in the table `tasks` with the next structure: + +```json +{ + "state": { + "checkpoints": { + "repo.creation": { + "status": "success", + "result": { + "repoUrl": "https://github.com/backstage/backstage.git" + } + }, + "repo.add.member": { + "status": "success", + "result": { + "id": "2345" + } + } + } + } +} +``` + ## Release Plan