docs/releases/v1.33.0-changelog.md
Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.33.0
e939cd7: BREAKING The dynamicPluginsFeatureLoader options related to the root logger behavior (transports, level, format) are now gathered under a single logger option which is a function taking an optional Config argument and returning the logger options.
This breaking change is required for 2 reasons:
Config would be required to provide the logger options,logger option because, when the root auditing service is introduced, distinct but similarly-named options would be required for the auditor as well.CommonJSModuleLoader to add support for resolvePackagePath calls from backend dynamic plugins, with customizable package resolution, and make the CommonJSModuleLoader public API.
Fixing this backend dynamic plugin limitation related to resolvePackagePath is important for backend dynamic plugins which use the database, since database migration scripts systematically use resolvePackagePath.ScannedPluginPackage descriptor of dynamic backend plugins loaded from their alpha package.json now contain both the main package manifest and the alpha manifest. Previously it used to contain only the content of the alpha package.json, which is nearly empty.
This will make it easier to use or display metadata of loaded dynamic backend plugins, which is contained in the main manifest.createValidatedOpenApiRouterFromGeneratedEndpointMap function that uses the new static server generation in backstage-cli package schema openapi generate --server to create a typed express router.mockServices.database with a given knex instancemockServices.discovery.factory() factory now uses the mocked discovery service as its implementation, avoid the need for configuration.msw dependency.backstage-cli package schema openapi generate --client-package ....getEntitiesByRefs calls into several smaller requests behind the scenes when needed. This ensures that each individual request does not exceed common Express.js request body limits or overload the server.catalogApiMock being case sensitive.bc47b17: BREAKING: Updates ESLint config to ignore all generated source code under src/**/generated/**/*.ts.
6819f8c: Added a new optimization to the repo test command that will filter out unused packages in watch mode if all provide filters are paths that point from the repo root. This significantly speeds up running individual tests from the repo root in a large workspace, for example:
yarn test packages/app/src/App.test.tsx
d849865: The package packing now populates typesVersions for additional entry points rather than using additional package.json files for type resolution. This improves auto completion of separate entry points when consuming published packages.
bc71665: BREAKING: The LEGACY_BACKEND_START flag has been removed, along with support for src/run.ts as the development entry point.
4046d53: Fixed an issue where the --successCache option for the repo test and repo lint commands would be include the workspace path in generated cache keys. This previously broke caching in environments where the workspace path varies across builds.
4a378d3: Fix dev server reloads of plugin discovery for new frontend system.
28b60ad: The check for react-dom/client in the Jest configuration will now properly always run from the target directory.
6b2888c: Fixed an issue with the --successCache flag for repo test where the tree hash for the wrong package directory would sometimes be used to generate the cache key.
e30b65d: Added --alwaysPack as a replacement for the now hidden --alwaysYarnPack flag for the build-workspace command.
be0278e: Removed circular import
a7f97e4: Added a new "rejectFrontendNetworkRequests" configuration flag that can be set in the "jest" field in the root package.json:
{
"jest": {
"rejectFrontendNetworkRequests": true
}
}
This flag causes rejection of any form of network requests that are attempted to be made in frontend or common package tests. This flag can only be set in the root package.json and can not be overridden in individual package configurations.
6c48ebd: Add --max-warnings -1 support to backstage-cli package lint
04297a0: The --successCache option for the repo test and repo lint commands now use an additive store that keeps old entries around for a week before they are cleaned up automatically.
a2f0559: When using the experimental Rspack flag the app build and dev server now injects configuration via a <script type="backstage.io/config">...</script> tag in index.html rather than the process.env.APP_CONFIG definition, which will now be defined as an empty array instead.
This requires the app to be using the config loader from the 1.31 release of Backstage. Make sure your app is using at least that version if you are upgrading to this version of the CLI.
If you have copied the implementation of the defaultConfigLoader, make sure to update it to the new implementation. In particular the config loader needs to be able to read configuration from script tags with the type backstage.io/config.
b4627f2: Fixed an issue where the raw-loader for loading HTML templates was not resolved from the context of the CLI package.
cd1ef2b: Updated dependency vite to ^5.0.0.
23f1da2: Updated dependency ts-morph to ^24.0.0.
b533056: Updated dependency css-loader to ^7.0.0.
be008c3: Updated dependency @module-federation/enhanced to ^0.7.0.
6266ed3: Updated dependency del to ^8.0.0.
4046d53: Fixed an issue with the repo lint command where the cache key for the --successCache option would not properly ignore files that should be ignored according to .eslintignores.
e19c53c: Fix for the --link flag for package start to deduplicate react-router and react-router-dom.
17850a5: Update upgrade-helper link in versions:bump command to include yarnPlugin parameter when the yarn plugin is installed
09ea093: Fixed an issue where .css style injection would fail for published packages.
702f41d: Bumped dev dependencies @types/node
5d74716: Remove unused backend-common dependency
b084f5a: Bump the Webpack dependency range to ^5.94.0, as our current configuration is not compatible with some older versions.
e565f73: Added support for .webp files in the frontend tooling.
946fa34: Added a new --link <workspace-path> option for frontend builds that allow you to override module resolution to link in an external workspace at runtime.
As part of this change the Webpack linked workspace resolution plugin for frontend builds has been removed. It was in place to support the old workspace linking where it was done by Yarn, which is no longer a working option.
Updated dependencies
readDurationFromConfig support both ISO and ms formats as well, to make it easier to enter time as an end user0f18340: Change core component Table tool bar search box to the a appropriate Search icon and text
af9097e: Adds the ability to mock a media query per break point and to change the active break point during a test. Usage example:
const { set } = mockBreakpoint({
initialBreakpoint: 'md',
queryBreakpointMap: {
'(min-width:1500px)': 'xl',
'(min-width:1000px)': 'lg',
'(min-width:700px)': 'md',
'(min-width:400px)': 'sm',
'(min-width:0px)': 'xs',
},
});
// assertions for when the active break point is "md"
set('lg');
// assertions for when the active break point is "lg"
Updated dependencies
backstage-repo-tools package schema openapi generate --server now generates complete TS interfaces for all request/response objects in your OpenAPI schema. This fixes an edge case around recursive schemas and standardizes both the generated client and server to have similar generated types.--watch mode to the schema openapi generate command for a better local schema writing experience.generate-patch command now properly includes newly created files in the patch.ts-morph to ^24.0.0.generate-patch command will now fall back to always adding a resolutions entry, even if no matching descriptors are found.generate-patch command that can be used to generate patches for current changes in a source workspace to be installed it a target workspace.@types/nodecreateDeferred and DeferredPromise.@asyncapi/react-component to latest 2.xindex.html.tmpl file is present.index.html templating is now done and served from memory rather than written to the filesystem. This means that you can now use config injection with a read-only filesystem, and you no longer need to use the app.disableConfigInjection flag.fullProfile will no longer have the its username or email converted to lowercase. This is to ensure unique handling of the users. You may need to update and configure a custom sign-in resolver or profile transform as a result.fullProfile will no longer have the its username or email converted to lowercase. This is to ensure unique handling of the users. You may need to update and configure a custom sign-in resolver or profile transform as a result.50df3c8: - Updated EntityLayout component to implement breadcrumb navigation based on the entity relations.
79e9631: Allow OffsetPaginatedCatalogTable to configure Table options and CursorPaginatedCatalogTable to configure paginationPosition.
CatalogIndexPage to not properly filter results when using offset pagination.39fd704: Internal update to use the new generated server types from backstage-cli package schema openapi generate --server.
76857da: Added entity_ref column to final_entities in order to move refresh_state away from the read path
34d4360: Drop redundant indices from the database.
The following redundant indices are removed in this version:
final_entities_entity_id_idx - overlaps with final_entities_pkeyrefresh_state_entity_id_idx - overlaps with refresh_state_pkeyrefresh_state_entity_ref_idx - overlaps with refresh_state_entity_ref_uniqsearch_key_idx and search_value_idx - these were replaced by the composite index search_key_value_idx in #22594No negative end user impact is expected, but rather that performance should increase due to less index churn.
spec.profile.displayName in the catalog on the frontend. Text filter fields were not applied correctly to the database query resulting in empty results.includeArchivedRepos property, which allows including repositories when the project is archived.6cf91c5: Use HumanDuration for all duration needs in the public API, instead of luxon types. These are generally compatible, with a few caveats:
quarter or quarters), you can use { months: 3 } instead.year: 1, use plurals instead (e.g. years: 1).dnCaseSensitive flag to support LDAP servers with mixed-case attributes.bc13b42: The catalogServiceRef now has its own accompanying CatalogService interface that requires Backstage credentials objects to be passed. This new version of the catalogServiceRef has been promoted and is now available via the main @backstage/plugin-catalog-node entry point.
The old catalogServiceRef with the old CatalogApi type is still available from the /alpha entry point.
scaffolder.template.management for accessing the template management featurescontextMenu not being disabled bug in new scaffolder pagesonInputChange in RepoUrlPicker to fix issue with the value not updating properlyidb-keyval to 5.1.5.EntityPicker0587633: Bumped the isolated-vm dependency from v4 to v5, which drops support for Node.js v16.
e61d5ef: BREAKING EXPERIMENTAL: The checkpoint method now takes an object instead of previous arguments.
await ctx.checkpoint({ key: 'repo.create', fn: () => ockokit.repo.create({...})})
You can also now return void from the checkpoint if the method returns void inside the checkpoint handler.
createDryRunner and corresponding route to include templateMetaData inside the templateInfo. This allows custom action writers to access things like templateInfo.entity.metadata.name via the action context while executing templates using the dry run framework.fs:readdir action to list current content of the workspacee61d5ef: BREAKING EXPERIMENTAL: The checkpoint method now takes an object instead of previous arguments.
await ctx.checkpoint({ key: 'repo.create', fn: () => ockokit.repo.create({...})})
You can also now return void from the checkpoint if the method returns void inside the checkpoint handler.
contextMenu not being disabled bug in new scaffolder pagesStepper and trying to trim additional properties. This is now all behind liveOmit and omitExtraData instead.scaffolder.template.management for accessing the template management featuresbackstage-cli package schema openapi generate --server.@backstage/backend-common.backend.default.skipMigrations config value.rootLoggerServiceFactory doc string.node-fetch instead of native fetch, as per https://backstage.io/docs/architecture-decisions/adrs-adr013@types/node@types/nodeprocess.env.APP_CONFIG to be set, allowing config to be read from other sources instead.create-app installs@types/nodeprocess.env.APP_CONFIG to be set, allowing config to be read from other sources instead.getDefaultCredentialsChain function now accepts and applies a region parameter, preventing it from defaulting to us-east-1 when no region is specified.@types/nodedevDependency for local development setup.ts-morph to ^24.0.0.GithubOrgEntityProvider that caused an error when processing teams without a parent.@apidevtools/json-schema-ref-parser to ^11.0.0.EntityDisplayName where text was overflowing.events.useEventBus by propagating config to DefaultEventsServiceRequestDetails
and use the raw body when validating incoming event requests.RequestDetails
and use the raw body when validating incoming event requests.4501631: Fixed an issue where subscribing to events threw an error and gave up too easily. Calling the subscribe method will cause the background polling loop to keep trying to connect to the events backend, even if the initial request fails.
By default the events service will attempt to publish and subscribe to events from the events bus API in the events backend, but if it fails due to the events backend not being installed, it will bail and never try calling the API again. There is now a new events.useEventBus configuration and option for the DefaultEventsService that lets you control this behavior. You can set it to 'never' to disabled API calls to the events backend completely, or 'always' to never allow it to be disabled.
e02a02b: Fix events.useEventBus by propagating config to DefaultEventsService
9816f51: Add raw body information to RequestDetails
and use the raw body when validating incoming event requests.
5d74716: Remove unused backend-common dependency
0b57aa1: Fixed an issue where the event bus polling would duplicate and increase exponentially over time.
Updated dependencies
8b1b2cf: Improve Starred Entities UI to reduce whitespace and provide more context on the entities:
<EntityDisplayName>) to display the entity's namekind and spec.type are displayed as a secondary textUpdated dependencies
@types/node9cf827c: Fix double branch creation in public:bitbucket{Cloud,Server}:pull-request
This resulted in the following error when using the actions:
AlreadyExistsError: Failed to create branch at create-test because it already exists.
The issue was original introduced in d103a48fa306d745599dc0c793668c9e6a479d32
Updated dependencies
9cf827c: Fix double branch creation in public:bitbucket{Cloud,Server}:pull-request
This resulted in the following error when using the actions:
AlreadyExistsError: Failed to create branch at create-test because it already exists.
The issue was original introduced in d103a48fa306d745599dc0c793668c9e6a479d32
Updated dependencies
@types/nodescaffolder.template.management for accessing the template management featuresfilter setting of the collator was not permitted to be an array.@short.io/opensearch-mock to ^0.4.0.@backstage-community/plugin-explore-common to ^0.0.7.<TechDocsReaderPageContent /> would re-render infinitely under certain conditions.canvas dev dependency.