docs/releases/v1.43.0-changelog.md
Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.43.0
mockServices.rootConfig() instance now has an update method that can be used to test configuration subscriptions and updates.0e9ec44: Introduced new streamEntities async generator method for the catalog.
Catalog API and Catalog Service now includes a streamEntities method that allows for streaming entities from the catalog.
This method is designed to handle large datasets efficiently by processing entities in a stream rather than loading them
all into memory at once. This is useful when you need to fetch a large number of entities but do not want to use pagination
or fetch all entities at once.
Example usage:
const pageStream = catalogClient.streamEntities({ pageSize: 100 }, { token });
for await (const page of pageStream) {
// Handle page of entities
for (const entity of page) {
console.log(entity);
}
}
OpenShiftAuth helper to create default OAuth flow for OpenShift.distance property to DependencyEdge to reflect the distance to a root.openshiftAuthApiRef available in @backstage/core-plugin-api.createSpecializedApp no longer throws when encountering many common errors when starting up the app. It will instead return them through the errors property so that they can be handled more gracefully in the app.openshiftApiRef available to the new frontend system.createFrontendPlugin and createFrontendModule so that errors due to incompatible options are indicated more clearly.auth frontend packageauth-backend-module-openshift-provider. This authentication provider enables Backstage to sign in with OpenShift.9b40a55: Add support for specifying an entity spec.type in catalog.rules and catalog.locations.rules within the catalog configuration.
For example, this enables allowing all Template entities with the type website:
catalog:
rules:
- allow:
- Component
- API
- Resource
- System
- Domain
- Location
+ - allow:
+ - kind: Template
+ spec.type: website
locations:
- type: url
pattern: https://github.com/org/*\/blob/master/*.yaml
37b4eaf: The 'get-catalog-entity' action now throws a ConflictError instead of generic Error if multiple entities are found, so MCP call doesn't fail with 500.
2bbd24f: Order catalog processors by priority.
This change enables the ordering of catalog processors by their priority,
allowing for more control over the catalog processing sequence.
The default priority is set to 20, and processors can be assigned a custom
priority to influence their execution order. Lower number indicates higher priority.
The priority can be set by implementing the getPriority method in the processor class
or by adding a catalog.processors.<processorName>.priority configuration
in the app-config.yaml file. The configuration takes precedence over the method.
e934a27: Updating catalog:get-catalog-entity action to be readOnly and non destructive
0efcc97: Updated generated schemas
2204f5b: Prevent deadlock in catalog deferred stitching
58874c4: Add support to disable catalog providers and processors via configuration
a4c82ad: Only run provider orphan cleanup if the engine is started in the first place
Updated dependencies
577f0ed: BREAKING: Encode query filters for requests made to msgraph. If you currently have manually encoded characters in a filter, this is a breaking change and must be updated to avoid requests being double encoded.
user:
- filter: department in('MARKETING', 'RESEARCH %26 DEVELOPMENT')
+ filter: department in('MARKETING', 'RESEARCH & DEVELOPMENT')
0e9ec44: Introduced new streamEntities async generator method for the catalog.
Catalog API and Catalog Service now includes a streamEntities method that allows for streaming entities from the catalog.
This method is designed to handle large datasets efficiently by processing entities in a stream rather than loading them
all into memory at once. This is useful when you need to fetch a large number of entities but do not want to use pagination
or fetch all entities at once.
Example usage:
const pageStream = catalogClient.streamEntities({ pageSize: 100 }, { token });
for await (const page of pageStream) {
// Handle page of entities
for (const entity of page) {
console.log(entity);
}
}
2bbd24f: Order catalog processors by priority.
This change enables the ordering of catalog processors by their priority,
allowing for more control over the catalog processing sequence.
The default priority is set to 20, and processors can be assigned a custom
priority to influence their execution order. Lower number indicates higher priority.
The priority can be set by implementing the getPriority method in the processor class
or by adding a catalog.processors.<processorName>.priority configuration
in the app-config.yaml file. The configuration takes precedence over the method.
Updated dependencies
0e9ec44: Introduced new streamEntities async generator method for the catalog.
Catalog API and Catalog Service now includes a streamEntities method that allows for streaming entities from the catalog.
This method is designed to handle large datasets efficiently by processing entities in a stream rather than loading them
all into memory at once. This is useful when you need to fetch a large number of entities but do not want to use pagination
or fetch all entities at once.
Example usage:
const pageStream = catalogClient.streamEntities({ pageSize: 100 }, { token });
for await (const page of pageStream) {
// Handle page of entities
for (const entity of page) {
console.log(entity);
}
}
EntityCardBlueprint. Omitting the type is now intended, allowing the layout to pick the default type instead, typically content.default* for older packages as this package is in range for breaking /alpha changesf0f06b4: Adding a new scaffolder action github:issues:create following the reference of github:issues:label with dryRun testing possibility
It can be used like this
steps:
- id: create-simple-issue
name: Create Simple Issue
action: github:issues:create
input:
repoUrl: ${{ parameters.repoUrl }}
title: "[${{ parameters.projectName }}] Simple Bug Report"
body: |
## Bug Description
This is a simple bug report created by the scaffolder template.
### Steps to Reproduce
1. Run the application
2. Navigate to the main page
3. Click on the problematic button
### Expected Behavior
The button should work correctly.
### Actual Behavior
The button does not respond to clicks.
output:
links:
- title: Simple Issue
url: ${{ steps['create-simple-issue'].output.issueUrl }}
aee107b: Add auto_init option to github:repo:create action to create repository with an initial commit containing a README.md file
This initial commit is created by GitHub itself and the commit is signed, so the repository will not be empty after creation.
- action: github:repo:create
id: init-new-repo
input:
repoUrl: 'github.com?repo=repo&owner=owner'
description: This is the description
visibility: private
+ autoInit: true
6393b78: Add block creations field in github branch protection scaffolder actions
Updated dependencies
dompurify to ^3.2.4.33bd4d0: Deduplicate discovered features discovered with discoveryFeatureLoader
4eda590: Fixed cache namespace and key prefix separator configuration to properly use configured values instead of hardcoded plugin ID. The cache manager now correctly combines the configured namespace with plugin IDs using the configured separator for Redis and Valkey. Memcache and memory store continue to use plugin ID as namespace.
f244e61: Add backend.logger config options to configure the RootLoggerService.
Read more about the new configuration options in the Root Logger Service documentation.
Updated dependencies
e6f45dc: Updated the WebPack configuration to use contenthash. This fixes an issue were builds would sometimes generate output files with the same name but different content across builds, leading to breakages when loading the frontend app.
fffd434: Disallow import fallback of critical shared dependencies in module federation.
080f252: Fixed the new-frontend-plugin template that was incorrectly passing id instead of pluginId to createFrontendPlugin and unnecessarily importing React.
e0db9b8: Modify the backstage.json also for custom patterns if it extends the default pattern.
Examples:
@backstage/* (default pattern)@{backstage,backstage-community}/*@{extra1,backstage,extra2}/*275bda8: Fixed an issue that could cause conflicts of detected modules in workspaces with multiple apps.
e1adce4: Updated the backend plugin template to use a new pattern for the TodoListService that reduces boilerplate.
Updated dependencies
BACKSTAGE_ENV for loading environment specific config filescompatWrapper creating many wrapping Providers when they should not@backstage/cli, @backstage/core-plugin-api and @backstage/integration-react@backstage/frontend-app-api. If there are critical errors during startup, an error screen that shows a summary of all errors will now be shown, rather than leaving the screen blank. Other errors will be logged as warnings in the console.execFile with spawn and removing shell option.@techdocs/cli serve command did not pick up the latest changes to TechDocs.window.matchMedia in tests, falling back to default breakpoint values instead.createRouter.auth.experimentalDynamicClientRegistration.enabled in app-config.yaml. This is highly experimental, but feedback welcome.EntityContextMenu, and do not render a divider if an empty array is passed to UNSTABLE_extraContextMenuItems.defaultTarget on createComponentRouteRef./alpha export to the root of the package.getDefault in the kubernetesFetcherExtensionPoint had the wrong this value/.well-known/oauth-authorization-server to /.well-known/openid-configuration on auth-backend when auth.experimentalDynamicClientRegistration.enabled is enabled.isError: true.
The error message can be useful for an LLM to understand and maybe give back to the user.
Previously all errors where thrown out to @modelcontextprotocol/sdk which causes a generic 500.a95cebd: Internal refactoring for better type support
7e7ed57: A new extension point was added that can be used to modify how the users receiving notifications are resolved. The interface passed to the extension point should only return complete user entity references based on the notification target references and the excluded entity references. Note that the inputs are lists of entity references that can be any entity kind, not just user entities.
Using this extension point will override the default behavior of resolving users with the
DefaultNotificationRecipientResolver.
Updated dependencies
7e7ed57: A new extension point was added that can be used to modify how the users receiving notifications are resolved. The interface passed to the extension point should only return complete user entity references based on the notification target references and the excluded entity references. Note that the inputs are lists of entity references that can be any entity kind, not just user entities.
Using this extension point will override the default behavior of resolving users with the
DefaultNotificationRecipientResolver.
Updated dependencies
backstage.io/techdocs-ref or backstage.io/techdocs-entity annotations, using the shared buildTechDocsURL helper. Also adds tests to verify both annotations and optional backstage.io/techdocs-entity-path are respected.ActionsRegistry in the scaffolder-backenduser-settings providers page.