docs/releases/v1.3.0-changelog.md
ServerTokenManager now must have an exp claim that has not expired. Tokens where the exp claim is in the past or missing are considered invalid and will throw an error. This is a followup to the deprecation from the 1.2 release of Backstage where perpetual tokens were deprecated. Be sure to update any usage of the getToken() method to have it be called every time a token is needed. Do not store tokens for later use.luxon dependency fix from the 0.13.4 patch release.0.13.5 patch release.@google-cloud/storage to ^6.0.0.msw to ^0.41.0.1dffa7dd4d: Add new common library bitbucket-cloud-common with a client for Bitbucket Cloud.
This client can be reused across all packages and might be the future place for additional features like managing the rate limits, etc.
The client itself was generated in parts using the @openapitools/openapi-generator-cli.
msw to ^0.42.0.449dcef98e: Updates the isKind, ìsComponentType, and isNamespace to allow an array of possible values
1f70704580: Accessibility updates:
Action buttons915700f64f: In order to simplify analytics on top of the search experience in Backstage, the provided <*ResultListItem /> component now captures a discover analytics event instead of a click event. This event includes the result rank as its value and, like a click, the URL/path clicked to as its to attribute.
Updated dependencies
b594679ae3: Allow array as non-spread arguments at the CatalogBuilder.
builder.addEntityProvider(...getArrayOfProviders());
can be simplified to
builder.addEntityProvider(getArrayOfProviders());
'url' locations from being registered via the location service.msw to ^0.41.0.@backstage/plugin-bitbucket-cloud-common as replacement for the BitbucketCloudClient.msw to ^0.41.0.dfc4efcbf0: Add new plugin catalog-backend-module-bitbucket-cloud with BitbucketCloudEntityProvider.
This entity provider is an alternative/replacement to the BitbucketDiscoveryProcessor (for Bitbucket Cloud only!).
It replaces use cases using search=true and should be powerful enough as a complete replacement.
If any feature for Bitbucket Cloud is missing and preventing you from switching, please raise an issue.
Before:
// packages/backend/src/plugins/catalog.ts
builder.addProcessor(
BitbucketDiscoveryProcessor.fromConfig(env.config, { logger: env.logger }),
);
# app-config.yaml
catalog:
locations:
- type: bitbucket-discovery
target: 'https://bitbucket.org/workspaces/workspace-name/projects/apis-*/repos/service-*?search=true&catalogPath=/catalog-info.yaml'
After:
// packages/backend/src/plugins/catalog.ts
builder.addEntityProvider(
BitbucketCloudEntityProvider.fromConfig(env.config, {
logger: env.logger,
schedule: env.scheduler.createScheduledTaskRunner({
frequency: { minutes: 30 },
timeout: { minutes: 3 },
}),
}),
);
# app-config.yaml
catalog:
providers:
bitbucketCloud:
yourProviderId: # identifies your ingested dataset
catalogPath: /catalog-info.yaml # default value
filters: # optional
projectKey: '^apis-.*
msw to ^0.41.0.@google-cloud/container to ^4.0.0.msw to ^0.41.0.dc39366bdb: - Added a new page under /create/tasks to show tasks that have been run by the Scaffolder.
ScaffolderApi interface called listTasks to get tasks with an required filterByOwnership parameter.86a4a0f72d: Get data of other fields in Form from a custom field in template Scaffolder. following:
const CustomFieldExtensionComponent = (props: FieldExtensionComponentProps<string[]>) => {
const { formData } = props.formContext;
...
};
const CustomFieldExtension = scaffolderPlugin.provide(
createScaffolderFieldExtension({
name: ...,
component: CustomFieldExtensionComponent,
validation: ...
})
);
72dfcbc8bf: Gerrit Integration: Implemented a RepoUrlPicker for Gerrit.
f93af969cd: Added the ability to support running of templates that are not in the default namespace
MultistepJsonForm to work as documented. show: true no longer needed when mask is set.msw to ^0.41.0.35a26131b3: DEPRECATION: The projectid input parameters to the publish:gitlab:merge-request, it's no longer required as it can be decoded from the repoUrl input parameter.
DEPRECATION: The projectid output of the action in favour of projectPath
72dfcbc8bf: A new scaffolder action has been added: gerrit:publish
ce0d8d7eb1: Fixed a bug in publish:github action that didn't permit to add users as collaborators.
This fix required changing the way parameters are passed to the action.
In order to add a team as collaborator, now you must use the team field instead of username.
In order to add a user as collaborator, you must use the user field.
It's still possible to use the field username but is deprecated in favor of team.
- id: publish
name: Publish
action: publish:github
input:
repoUrl: ...
collaborators:
- access: ...
team: my_team
- access: ...
user: my_username
582003a059: - Added an optional list method on the TaskBroker and TaskStore interface to list tasks by an optional userEntityRef
list method on the DatabaseTaskStore class to list tasks by an optional userEntityRef/v2/tasks to list tasks by a userEntityRef using the createdBy query parameterc042c5eaff: Add an option to not protect the default branch.
f93af969cd: Added the ability to support running of templates that are not in the default namespace
msw to ^0.41.0.publish:github scaffolder action fails to create a repository.<SearchPageNext>, <SearchBarNext>, etc... components have been removed. In the unlikely event you were still using/referencing them, please update to using their non-*Next equivalents from either @backstage/plugin-search-react or @backstage/plugin-search.<DefaultResultListItem>, <SearchBar> (including <SearchBarBase>), <SearchFilter> (including .Checkbox, .Select, and .Autocomplete static prop components), <SearchResult>, and <SearchResultPager> are now exported from @backstage/plugin-search-react. They are now deprecated in @backstage/plugin-search and will be removed in a future release.msw to ^0.41.0.<*ResultListItem /> component now captures a discover analytics event instead of a click event. This event includes the result rank as its value and, like a click, the URL/path clicked to as its to attribute.d047d81295: Use entity title as label in TechDocsReaderPageHeader if available
8f7b1835df: Updated dependency msw to ^0.41.0.
bff65e6958: Updated sidebar-related logic to use <SidebarPinStateProvider> + useSidebarPinState() and/or <SidebarOpenStateProvider> + useSidebarOpenState() from @backstage/core-components.
915700f64f: In order to simplify analytics on top of the search experience in Backstage, the provided <*ResultListItem /> component now captures a discover analytics event instead of a click event. This event includes the result rank as its value and, like a click, the URL/path clicked to as its to attribute.
881fbd7e8d: Fix EntityTechdocsContent component to use objects instead of <Route> elements, otherwise "outlet" will be null on sub-pages and add-ons won't render.
17c059dfd0: Restructures reader style transformations to improve code readability:
3b45ad701f: Packages a set of tweaks to the TechDocs addons rendering process:
9b94ade898: Use entity title in TechDocsSearch placeholder if available.
816f7475ec: Convert sanitizeDOM transformer to hook as part of code readability improvements in dom file.
50ff56a80f: Change the EntityDocsPage path to be more specific and also add integration tests for sub-routes on this page.
Updated dependencies
README.md.README.md.cron to ^2.0.0.
Updated dependency @types/cron to ^2.0.0.msw to ^0.41.0.msw to ^0.41.0./ is always appended when needed.create-github-app permissions selection prompt by converting it into a multi-select with clearer descriptions. The members permission is now also included in the list which is required for ingesting user data into the catalog.run-script-webpack-plugin to ^0.0.14.@rollup/plugin-commonjs to ^22.0.0.msw to ^0.41.0.minimatch to 5.1.0.app.baseUrl and backend.baseUrl are identicalmsw to ^0.41.0.msw to ^0.41.0.fetchApi, when using the plugin: protocolfeb4e8de07: Fix EntityPage tab scrolling overflow bug on Firefox
65840b17be: Fix issue where right arrow icon was incorrectly added to side bar items without a sub-menu
de593ec78f: Updated dependency react-text-truncate to ^0.19.0.
8f7b1835df: Updated dependency msw to ^0.41.0.
6968b65ba1: Updated dependency @react-hookz/web to ^14.0.0.
ee2cd642c5: Updated dependency rc-progress to 3.3.3.
96d1e01641: Accessibility updates:
aria-label to the Select componentTable component7d355c4b3f: Fix the missing filter in the toolbar when passing a custom component in the core-components Table
1cf9caecd6: fix Sidebar Contexts deprecation message
bff65e6958: The SidebarPinStateContext and SidebarContext have been deprecated and will be removed in a future release. Instead, use <SidebarPinStateProvider> + useSidebarPinState() and/or <SidebarOpenStateProvider> + useSidebarOpenState().
This was done to ensure that sidebar state can be shared successfully across components exported by different packages, regardless of what version of this package is resolved and installed for each individual package.
Updated dependencies
msw to ^0.41.0.881fbd7e8d: Register TechDocs addons on catalog entity pages, follow the steps below to add them manually:
// packages/app/src/components/catalog/EntityPage.tsx
+ import { TechDocsAddons } from '@backstage/plugin-techdocs-react';
+ import {
+ ReportIssue,
+ } from '@backstage/plugin-techdocs-module-addons-contrib';
+ const techdocsContent = (
+ <EntityTechdocsContent>
+ <TechDocsAddons>
+ <ReportIssue />
+ </TechDocsAddons>
+ </EntityTechdocsContent>
+ );
const defaultEntityPage = (
...
<EntityLayout.Route path="/docs" title="Docs">
+ {techdocsContent}
</EntityLayout.Route>
...
);
const serviceEntityPage = (
...
<EntityLayout.Route path="/docs" title="Docs">
+ {techdocsContent}
</EntityLayout.Route>
...
);
const websiteEntityPage = (
...
<EntityLayout.Route path="/docs" title="Docs">
+ {techdocsContent}
</EntityLayout.Route>
...
);
0e870fe0ac: Removed peer dependencies, as they are no longer needed.
bff65e6958: Use of SidebarContext has been deprecated and will be removed in a future release. Instead, useSidebarOpenState() should be used to consume the context and <SidebarOpenStateProvider> should be used to provide it.
To prepare your app, update packages/app/src/components/Root/Root.tsx as follows:
import {
Sidebar,
sidebarConfig,
- SidebarContext
SidebarDivider,
// ...
SidebarSpace,
+ useSidebarOpenState,
} from '@backstage/core-components';
// ...
const SidebarLogo = () => {
const classes = useSidebarLogoStyles();
- const { isOpen } = useContext(SidebarContext);
+ const { isOpen } = useSidebarOpenState();
// ...
};
935d8515da: Updated the --version flag to output the version of the current backstage release instead of the version of create-app.
18d4c3e50a: Updated app-config.production.yaml to specify an empty list of catalog locations. This is done to prevent example locations stored in app-config.yaml from being loaded as these are examples.
1f70704580: Accessibility updates:
aria-label to the sidebar Logo link. To enable this for an existing app, please make the following changes:packages/app/src/components/Root/Root.tsx
const SidebarLogo = () => {
const classes = useSidebarLogoStyles();
const { isOpen } = useContext(SidebarContext);
return (
<div className={classes.root}>
<Link
component={NavLink}
to="/"
underline="none"
className={classes.link}
+ aria-label="Home"
>
{isOpen ? <LogoFull /> : <LogoIcon />}
</Link>
</div>
);
};
30f04d1497: Components <DefaultResultListItem>, <SearchBar>, <SearchFilter>, and <SearchResult> are now deprecated in @backstage/plugin-search and should be imported from @backstage/plugin-search-react instead.
To upgrade your App, update the following in packages/app/src/components/search/SearchPage.tsx:
import {
DefaultResultListItem
SearchBar
SearchFilter
SearchResult
- } from `@backstage/plugin-search`;
+ } from `@backstage/plugin-search-react`;
f7f5a6c6a3: It's now possible to pass result item components a rank, which is captured by the analytics API when a user clicks on a search result. To apply this change, update your /packages/app/src/components/search/SearchPage.tsx in the following way:
// ...
<SearchResult>
{({ results }) => (
<List>
- {results.map(({ type, document, highlight }) => {
+ {results.map(({ type, document, highlight, rank }) => {
switch (type) {
case 'software-catalog':
return (
<CatalogSearchResultListItem
key={document.location}
result={document}
highlight={highlight}
+ rank={rank}
/>
);
case 'techdocs':
return (
<TechDocsSearchResultListItem
key={document.location}
result={document}
highlight={highlight}
+ rank={rank}
/>
);
default:
return (
<DefaultResultListItem
key={document.location}
result={document}
highlight={highlight}
+ rank={rank}
/>
);
}
})}
</List>
)}
</SearchResult>
// ...
If you have implemented a custom Search Modal or other custom search experience, you will want to make similar changes in those components.
aaf7652084: Bump version of cypress in newly scaffolded Backstage Applications. To apply this change to your own instance, please make the following change to packages/app/package.json under devDependencies.
- "cypress": "^7.3.0",
+ "cypress": "^9.7.0",
141a1caebe: Updated the auth backend setup in the template to include a guest sign-in resolver in order to make it quicker to get up and running with a basic sign-in setup. There is no need to update existing apps to match this change, but in case you want to use the guest sign-in resolver you can find it at https://backstage.io/docs/auth/identity-resolver#guest-sign-in-resolver
resolveUrl properly.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.cypress to ^10.0.0.<SidebarPinStateProvider> + useSidebarPinState() and/or <SidebarOpenStateProvider> + useSidebarOpenState() from @backstage/core-components.msw to ^0.41.0.msw to ^0.41.0.AdrSearchResultListItemmsw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.isAllureReportAvailable and ALLURE_PROJECT_ID_ANNOTATION so it can be used outside of pluginmsw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.swagger-ui-react to 4.11.1 in order to address a XSS vulnerability in @braintree/sanitize-urlmsw to ^0.41.0.msw to ^0.41.0.passport to ^0.6.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.b8884fd579: Add a new provider AzureDevOpsEntityProvider as replacement for AzureDevOpsDiscoveryProcessor.
In order to migrate from the AzureDevOpsDiscoveryProcessor you need to apply
the following changes:
Before:
# app-config.yaml
catalog:
locations:
- type: azure-discovery
target: https://dev.azure.com/myorg/myproject/_git/service-*?path=/catalog-info.yaml
/* packages/backend/src/plugins/catalog.ts */
import { AzureDevOpsDiscoveryProcessor } from '@backstage/plugin-catalog-backend-module-azure';
const builder = await CatalogBuilder.create(env);
/** ... other processors ... */
builder.addProcessor(new AzureDevOpsDiscoveryProcessor(env.reader));
After:
# app-config.yaml
catalog:
providers:
azureDevOps:
anyProviderId:
host: selfhostedazure.yourcompany.com # This is only really needed for on-premise user, defaults to dev.azure.com
organization: myorg # For on-premise this would be your Collection
project: myproject
repository: service-*
path: /catalog-info.yaml
/* packages/backend/src/plugins/catalog.ts */
import { AzureDevOpsEntityProvider } from '@backstage/plugin-catalog-backend-module-azure';
const builder = await CatalogBuilder.create(env);
/** ... other processors and/or providers ... */
builder.addEntityProvider(
AzureDevOpsEntityProvider.fromConfig(env.config, {
logger: env.logger,
schedule: env.scheduler.createScheduledTaskRunner({
frequency: { minutes: 30 },
timeout: { minutes: 3 },
}),
}),
);
Visit https://backstage.io/docs/integrations/azure/discovery for more details and options on configuration.
8f7b1835df: Updated dependency msw to ^0.41.0.
Updated dependencies
msw to ^0.41.0.msw to ^0.41.0.eea8126171: Add a new provider GitlabDiscoveryEntityProvider as replacement for GitlabDiscoveryProcessor
In order to migrate from the GitlabDiscoveryProcessor you need to apply
the following changes:
Before:
# app-config.yaml
catalog:
locations:
- type: gitlab-discovery
target: https://company.gitlab.com/prefix/*/catalog-info.yaml
/* packages/backend/src/plugins/catalog.ts */
import { GitlabDiscoveryProcessor } from '@backstage/plugin-catalog-backend-module-gitlab';
const builder = await CatalogBuilder.create(env);
/** ... other processors ... */
builder.addProcessor(
GitLabDiscoveryProcessor.fromConfig(env.config, { logger: env.logger }),
);
After:
# app-config.yaml
catalog:
providers:
gitlab:
yourProviderId: # identifies your dataset / provider independent of config changes
host: gitlab-host # Identifies one of the hosts set up in the integrations
branch: main # Optional. Uses `master` as default
group: example-group # Group and subgroup (if needed) to look for repositories
entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml`
/* packages/backend/src/plugins/catalog.ts */
import { GitlabDiscoveryEntityProvider } from '@backstage/plugin-catalog-backend-module-gitlab';
const builder = await CatalogBuilder.create(env);
/** ... other processors and/or providers ... */
builder.addEntityProvider(
...GitlabDiscoveryEntityProvider.fromConfig(env.config, {
logger: env.logger,
schedule: env.scheduler.createScheduledTaskRunner({
frequency: { minutes: 30 },
timeout: { minutes: 3 },
}),
}),
);
bad907d794: The last_activity_after timestamp is now being omitted when querying the GitLab API for the first time.
3ac4522537: do not create location object if file with component definition do not exists in project, that decrease count of request to gitlab with 404 status code. Now we can create processor with new flag to enable this logic:
const processor = GitLabDiscoveryProcessor.fromConfig(config, {
logger,
skipReposWithoutExactFileMatch: true,
});
WARNING: This new functionality does not support globs in the repo file path
8f7b1835df: Updated dependency msw to ^0.41.0.
Updated dependencies
msw to ^0.41.0.@backstage/search-common with @backstage/plugin-search-commonmsw to ^0.41.0.msw to ^0.41.0.1f70704580: Accessibility updates:
EntityLifecyclePicker, EntityOwnerPicker, EntityTagPicker, in label elementsTypography component to span (from default h6), added aria-label to the List component, and role of menuitem to the container of the MenuItem component568f2d1e75: Table component no longer has drag and drop columns by default
Updated dependencies
msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.rc-progress to 3.3.3.msw to ^0.41.0.sidebar was updated to the current path.export in configuration schema.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.@react-hookz/web to ^14.0.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.8f7b1835df: Updated dependency msw to ^0.41.0.
306d0b4fdd: Added the ability to use an additional filter when fetching groups in MyGroupsSidebarItem component. Example:
// app/src/components/Root/Root.tsx
<SidebarPage>
<Sidebar>
//...
<SidebarGroup label="Menu" icon={<MenuIcon />}>
//...
<SidebarItem icon={HomeIcon} to="catalog" text="Home" />
<MyGroupsSidebarItem
singularTitle="My Squad"
pluralTitle="My Squads"
icon={GroupIcon}
+ filter={{ 'spec.type': 'team' }}
/>
//...
</SidebarGroup>
</ Sidebar>
</SidebarPage>
Updated dependencies
msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.58426f9c0f: Added a new endpoint for aggregating permission metadata from a plugin backend: /.well-known/backstage/permissions/metadata
By default, the metadata endpoint will return information about the permission rules supported by the plugin. Plugin authors can also provide an optional permissions parameter to createPermissionIntegrationRouter. If provided, these Permission objects will be included in the metadata returned by this endpoint. The permissions parameter will eventually be required in a future breaking change.
8f7b1835df: Updated dependency msw to ^0.41.0.
Updated dependencies
msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.RouterOptions and createRouter now marked as public exportsrank value to all results.281cec1b61: Use more precise matching for query filters
915700f64f: The provided search engine now adds a pagination-aware rank value to all results.
ddce23d080: Now possible to set a custom index template on the elasticsearch search engine.
7d8acfc32e: Additional types now exported publicly:
Updated dependencies
rank value to all results.e7794a0aaa: propagate indexing errors so they don't appear successful to the task scheduler
3bb25a9acc: Introducing a NewlineDelimitedJsonCollatorFactory, which can be used to create search indices from newline delimited JSON files stored in external storage readable via a configured UrlReader instance.
This is useful if you have an independent process periodically generating *.ndjson files consisting of IndexableDocument objects and want to be able to generate a fresh index based on the latest version of such a file.
3bb25a9acc: Fixed a bug that prevented TestPipeline.withSubject from identifying valid Readable subjects that were technically transform streams.
915700f64f: The provided search engine now adds a pagination-aware rank value to all results.
7d8acfc32e: Replaced all @beta exports with @public exports
Updated dependencies
@beta exports now replaced with @public exportsrank attribute to the Result type. This represents the result rank (starting at 1) for a given result in a result set for a given search.<DefaultResultListItem>, <SearchBar> (including <SearchBarBase>), <SearchFilter> (including .Checkbox, .Select, and .Autocomplete static prop components), <SearchResult>, and <SearchResultPager> are now exported from @backstage/plugin-search-react. They are now deprecated in @backstage/plugin-search and will be removed in a future release.isSentryAvailable which can be used to determine if sentry is available.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.rc-progress to 3.3.3.msw to ^0.41.0.msw to ^0.41.0.msw to ^0.41.0.4fee8f59e3: Updated tech-insights fetch/latest endpoint to return the actual latest row based on the timestamp
aa15229ec3: Introduce additional JsonValue types to be storable as facts. This enables the possibility to store more complex objects for fact checking purposes. The rules engine supports walking keyed object values directly to create rules and checks
Modify facts database table to have a more restricted timestamp precision for cases where the postgres server isn't configured to contain such value. This fixes the issue where in some cases maxItems lifecycle condition didn't work as expected.
Updated dependencies
aa15229ec3: Introduce additional JsonValue types to be storable as facts. This enables the possibility to store more complex objects for fact checking purposes. The rules engine supports walking keyed object values directly to create rules and checks
Modify facts database table to have a more restricted timestamp precision for cases where the postgres server isn't configured to contain such value. This fixes the issue where in some cases maxItems lifecycle condition didn't work as expected.
Updated dependencies
d3-force to ^3.0.0.
Updated dependency @types/d3-force to ^3.0.0.msw to ^0.41.0.msw to ^0.41.0.8f7b1835df: Updated dependency msw to ^0.41.0.
61fba6e50b: In order to ensure a good, stable TechDocs user experience when running TechDocs with techdocs.builder set to local, the number of concurrent builds has been limited to 10. Any additional builds requested concurrently will be queued and handled as prior builds complete. In the unlikely event that you need to handle more concurrent builds, consider scaling out your TechDocs backend deployment or using the external option for techdocs.builder.
5d66d4ff67: Output logs from a TechDocs build to a logging transport in addition to existing frontend event stream, for capturing these logs to other sources.
This allows users to capture debugging information around why tech docs fail to build without needing to rely on end users capturing information from their web browser.
The most common use case is to log to the same place as the rest of the backend application logs.
Sample usage:
import { DockerContainerRunner } from '@backstage/backend-common';
import {
createRouter,
Generators,
Preparers,
Publisher,
} from '@backstage/plugin-techdocs-backend';
import Docker from 'dockerode';
import { Router } from 'express';
import { PluginEnvironment } from '../types';
export default async function createPlugin(
env: PluginEnvironment,
): Promise<Router> {
const preparers = await Preparers.fromConfig(env.config, {
logger: env.logger,
reader: env.reader,
});
const dockerClient = new Docker();
const containerRunner = new DockerContainerRunner({ dockerClient });
const generators = await Generators.fromConfig(env.config, {
logger: env.logger,
containerRunner,
});
const publisher = await Publisher.fromConfig(env.config, {
logger: env.logger,
discovery: env.discovery,
});
await publisher.getReadiness();
return await createRouter({
preparers,
generators,
publisher,
logger: env.logger,
// Passing a buildLogTransport as a parameter in createRouter will enable
// capturing build logs to a backend log stream
buildLogTransport: env.logger,
config: env.config,
discovery: env.discovery,
cache: env.cache,
});
}
Updated dependencies
msw to ^0.41.0.@react-hookz/web to ^14.0.0.@google-cloud/storage to ^6.0.0.express' res.redirect() method when handling legacy path casing.3b45ad701f: Creates a TechDocsShadowDom component that takes a tree of elements and an onAppend handler:
onAppend handler when appending the element tree to the shadow root;Updated dependencies
msw to ^0.41.0.msw to ^0.41.0.<UserSettingsIdentityCard /> to show the result of the identityApi.getBackstageIdentity() call to help debug ownership issues. The new card has been added to the user settings page.msw to ^0.41.0.<SidebarPinStateProvider> + useSidebarPinState() and/or <SidebarOpenStateProvider> + useSidebarOpenState() from @backstage/core-components.msw to ^0.41.0.