docs/releases/v1.11.0-changelog.md
RootHttpRouterConfigureOptions to RootHttpRouterConfigureContext, and removed the unused type ServiceOrExtensionPoint.*Factory exports to *ServiceFactory instead. For example configFactory now is exported as configServiceFactory.HttpServerCertificateOptions when specified with a key and cert should also have the type: 'pem' instead of type: 'plain'CacheService interface.BackendFeature type.ServiceFactory.config and rootHttpRouter services out to the factories themselves, where they belongHttpRouterFactoryOptions.getPath is now optional as a default value is always provided in the factory.LogMeta.@backstage/dev-utils is used in the frontend.addShutdownHook is the hook function, and the second is the options.createBackendPlugin is now pluginId, rather than just id. This is to make it match createBackendModule more closely.LogMeta type for JsonObject.CacheService has been changed to remove the indirection of getClient, instead making the CacheClient methods directly available on the CacheService. In order to allow for the creation of clients with default options, there is now a new .withOptions method that must be implemented as part of the service interface.ServiceFactory to be an opaque type, keeping only the service field as public API, but also adding a type parameter for the service scope.BackendFeature to be an opaque type.TypesToServiceRef type$type property with namespacing.register methods passed to createBackendPlugin and createBackendModule
now have dedicated BackendPluginRegistrationPoints and
BackendModuleRegistrationPoints arguments, respectively. This lets us make it
clear on a type level that it's not possible to pass in extension points as
dependencies to plugins (should only ever be done for modules). This has no
practical effect on code that was already well behaved.AdrSearchResultListItem component is now a search result extension. This means that when rendered as a child of components that render search extensions, the result, rank, and highlight properties are optional. See the documentation for more details.AdrSearchResultListItem<MissingAnnotationEmptyState /> component when the backstage.io/adr-location annotation is missing from the componentyarn add --cwd for app & backendcsp instructions@asyncapi/react-component to 1.0.0-next.47.AboutCard description sectionCatalogSearchResultListItem component is now a search result extension. This means that when rendered as a child of components that render search extensions, the result, rank, and highlight properties are optional. See the documentation for more details.d7f55f6bd2: The list of entities takes into account the title when its different from the name to sort the entities.
66e2aab4c4: ListItem wrapper component moved to SearchResultListItemExtension for all *SearchResultListItems that are exported as extensions. This is to make sure the list only contains list elements.
Note: If you have implemented a custom result list item, we recommend you to remove the list item wrapper to avoid nested <li> elements.
7d46ca2f68: Make catalog search result list a bit more customizable
Updated dependencies
yarn add --cwd for app & backendrun script as TestBackend auto loads the default factoriesEventSubscriber from addIncrementalEntityProvider to hook up to EventsBackendfb568e2683: Improve performance when loading users via group membership. Users data is now loaded from a paged query, rather than having to make an extra call per user to load each user's profiles.
Note, there are still additional per user calls made to load user avatars
user.select field expected from the app-config.yaml configurationinitialFilter prop to EntityLifecyclePicker. This allows you to set an initial lifecycle for the catalog.README.md for more details!README.md for more details!README.md for more details!README.md.ToolSearchResultListItem component is now a search result extension. This means that when rendered as a child of components that render search extensions, the result, rank, and highlight properties are optional. See the documentation for more details.66e2aab4c4: ListItem wrapper component moved to SearchResultListItemExtension for all *SearchResultListItems that are exported as extensions. This is to make sure the list only contains list elements.
Note: If you have implemented a custom result list item, we recommend you to remove the list item wrapper to avoid nested <li> elements.
Updated dependencies
d1fb4b7bf1: Add the new GraphQL Voyager tool as a plugin for backstage, expose necessary API and components needed for it.
For more information on how to use this plugin and configure it, please navigate to the README of the plugin.
LimitRangeFetchReponse to LimitRangeFetchResponse.@kubernetes/client-node to 0.18.1.eef62546ce: Require @backstage/plugin-lighthouse-common package where API implementation moved to.
BREAKING: the following types have been moved to @backstage/plugin-lighthouse-common:
AuditAuditBaseAuditCompletedAuditFailedAuditRunningFetchErrorLASListRequestLASListResponseLighthouseApiLighthouseCategoryAbbrLighthouseCategoryIdLighthouseConfigSettingsLighthouseRestApiTriggerAuditPayloadWebsiteWebsiteListResponseyarn add --cwd for app & backendREADME.md for more details!README.md for more details!README.md for more details!44412375bb: Created a new plugin @backstage/plugin-microsoft-calendar to display events from a Microsoft Calendar.
please refer to the README.md for step-by-step instructions to setup the plugin in your Backstage instance.
yarn add --cwd for app & backendd6bb12a2e7: - Deprecation - Deprecated the following exports, please import them directly from @backstage/plugin-scaffolder-react instead
createScaffolderLayout
ScaffolderLayouts
LayoutOptions
LayoutTemplate
a521379688: Migrating the TemplateEditorPage to work with the new components from @backstage/plugin-scaffolder-react
074f7e81b5: Added a missing validator check for items in an array
8c2966536b: Embed scaffolder workflow in other components
scaffolder/next: bump react-jsonschema-form libraries to v5-stableOngoingTask page@rjsf/*-beta packages@rjsf version 5 dependencies to beta.18@rjsf v5 dependencies to 5.1.0ScaffolderLayouts to NextScaffolderPagetargetPath of the template:fetch actionscaffolderCatalogModule to catalogModuleTemplateKind in order to follow the new recommended naming patterns of backend system items. This is technically a breaking change but in an alpha export, so take care to change your imports if you have already migrated to the new backend system.0ff03319be: Updated usage of createBackendPlugin.
ad3edc402d: Deprecations: The following are deprecated and should instead be imported from the new package @backstage/plugin-scaffolder-node:
ActionContextcreateTemplateActionTaskSecretsTemplateAction6c70919f1a: Provide better error messaging when GitHub fails due to missing team definitions
66cf22fdc4: Updated dependency esbuild to ^0.17.0.
Updated dependencies
@backstage/plugin-scaffolder-backend that are shared with other modulesDescriptionField field override to the next/scaffolderTemplateEditorPage to work with the new components from @backstage/plugin-scaffolder-reactcreateAsyncValidators to be recursive to ensure validators are called in nested schemas.scaffolder/next: bump react-jsonschema-form libraries to v5-stableOngoingTask page@rjsf/*-beta packages@rjsf version 5 dependencies to beta.18@rjsf v5 dependencies to 5.1.0ScaffolderLayouts to NextScaffolderPageSearchModal component to use SearchResult extensions.showCounts option to display result counts per type in SearchType.AccordiondisableRipple property on the Tab component removed to improve keyboard navigation indicator.SearchResult, SearchResultList and SearchResultGroup components to use extensions and default their props to optionally accept a query, when the query is not passed, the component tries to get it from the search context.66e2aab4c4: ListItem wrapper component moved to SearchResultListItemExtension for all *SearchResultListItems that are exported as extensions. This is to make sure the list only contains list elements.
Note: If you have implemented a custom result list item, we recommend you to remove the list item wrapper to avoid nested <li> elements.
Updated dependencies
substr4024b37449: TechInsightsApi interface now has getFactSchemas() method. TechInsightsClient now implements method getFactSchemas().
BREAKING FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common
These changes are required if you were importing this type directly.
- import { FactSchema } from '@backstage/plugin-tech-insights-node';
+ import { FactSchema } from '@backstage/plugin-tech-insights-common';
TechDocsSearchResultListItem component is now a search result extension. This means that when rendered as a child of components that render search extensions, the result, rank, and highlight properties are optional. See the documentation for more details.c8e09cc383: Fixed bug in Techdocs reader where a techdocs page with a hash in the URL did not always jump to the document anchor.
cad5607411: Improve view: remove footer overlay on large screen
66e2aab4c4: ListItem wrapper component moved to SearchResultListItemExtension for all *SearchResultListItems that are exported as extensions. This is to make sure the list only contains list elements.
Note: If you have implemented a custom result list item, we recommend you to remove the list item wrapper to avoid nested <li> elements.
4660b63947: Create a TechDocs <LightBox/> addon that allows users to open images in a light-box on documentation pages, they can navigate between images if there are several on one page.
Here's an example on how to use it in a Backstage app:
import {
DefaultTechDocsHome,
TechDocsIndexPage,
TechDocsReaderPage,
} from '@backstage/plugin-techdocs';
import { TechDocsAddons } from '@backstage/plugin-techdocs-react/alpha';
+import { LightBox } from '@backstage/plugin-techdocs-module-addons-contrib';
const AppRoutes = () => {
<FlatRoutes>
// other plugin routes
<Route path="/docs" element={<TechDocsIndexPage />}>
<DefaultTechDocsHome />
</Route>
<Route
path="/docs/:namespace/:kind/:name/*"
element={<TechDocsReaderPage />}
>
<TechDocsAddons>
+ <LightBox />
</TechDocsAddons>
</Route>
</FlatRoutes>;
};
Updated dependencies
mkdocs.yml configuration file when none is provided5febb216fe: BREAKING: The CacheClient interface must now also implement the withOptions method. The .get() method has also received a type parameter that helps ensure that undefined in the event of a cache miss is handled.
Added a cacheToPluginCacheManager helper that converts a CacheService into a legacy PluginCacheManager instance.
5febb216fe: Updated to match the new CacheService interface.
e716946103: Updated usage of the lifecycle service.
d31d8e00b3: Updated to work with the new type: 'pem' with createHttpServer from @backstage/backend-app-api
0ff03319be: Updated usage of createBackendPlugin.
f60cca9da1: The DatabaseManager.forPlugin method now accepts additional service dependencies. There is no need to update existing code to pass these dependencies.
628e2bd89a: Updated dependency @kubernetes/client-node to 0.18.1.
Updated dependencies
*ServiceFactory exports from @backstage/backend-app-api@backstage/cli dependency.yarn add --cwd for app & backendmockServices.config().mockServices.rootLogger options to accept a single level option instead.BackendFeature type.*ServiceFactory exports from @backstage/backend-app-apiServiceFactory.ref from all mockServices.mockServices export.LogMeta.backstage-cli repo test command now sets a default Jest --workerIdleMemoryLimit of 1GB. If needed to ensure that tests are not run in band, --maxWorkers=2 is set as well. This is the recommended workaround for dealing with Jest workers leaking memory and eventually hitting the heap limit.@backstage/eslint-plugin. See the README for a full list of rules.esbuild to ^0.17.0.package start command for backend packages. Enabled by setting EXPERIMENTAL_BACKEND_START.commander to being a regular dependency.window.open that helps prevent security vulnerabilities.substrSearchPage template to use SearchResult extensions.packages/app/cypress/.eslintrc.json to remove the unnecessary import/no-extraneous-dependencies rule.backstage.role are now ignored.dd1e37649f: Deprecated getMkDocsYml in favor of getMkdocsYml (lowercase 'd')
dcacf94912: Fix proxying to mkdocs
The domain localhost may point to both 127.0.0.1 and ::1, ipv4 and ipv6 and when node tries to lookup localhost it might prefer ipv6 while mkdocs is only listening on ipv4. This tells node-proxy to target the ipv4 address instead of relying on localhost hostname lookup.
339d9a5b5c: Added support for using a default mkdocs.yml configuration file when none is provided
6e0b6a0d50: Fixed publish command missing awsBucketRootPath option. Fixed publish command having the gcsBucketRootPath option misconfigured, previously returning a boolean vs a string.
Updated dependencies
catalog-info.yaml has an airbrake id set in the metadatayarn add --cwd for app & backendyarn add --cwd for app & backendsubstryarn add --cwd for app & backend@material-ui/core version ^4.12.2 like all other in-repo packagescreateBackendPlugin.AssignedToCurrentUsersTeams & CreatedByCurrentUsersTeams filter in AzurePullRequestsPage component.yarn add --cwd for app & backendsubstryarn add --cwd for app & backendAzureSites plugin start and stop issue #15904
Fixed AzureSites UI load issue #15907yarn add --cwd for app & backendcreateBackendPlugin.substrsearch.original_value column may leave some of the entities not updated. Add a migration script to trigger a reprocessing of the entities.createBackendPlugin.LocationSpec from the correct package.externalId when assuming role in AwsS3EntityProvider2890f47517: This will add the ability to use Azure DevOps with multi project with a single value which is a new feature as previously this had to be done manually for each project that you wanted to add.
Right now you would have to fill in multiple values in the config to use multiple projects:
yourFirstProviderId: # identifies your dataset / provider independent of config changes
organization: myorg
project: 'firstProject' # this will match the firstProject project
repository: '*' # this will match all repos
path: /catalog-info.yaml
yourSecondProviderId: # identifies your dataset / provider independent of config changes
organization: myorg
project: 'secondProject' # this will match the secondProject project
repository: '*' # this will match all repos
path: /catalog-info.yaml
With this change you can actually have all projects available where your PAT determines which you have access to, so that includes multiple projects:
yourFirstProviderId: # identifies your dataset / provider independent of config changes
organization: myorg
project: '*' # this will match all projects where your PAT has access to
repository: '*' # this will match all repos
path: /catalog-info.yaml
85b04f659a: Internal refactor to not use deprecated substr
Updated dependencies
substrsubstrsubstryarn add --cwd for app & backendCatalogGraphCard to allow for custom node & label rendering or kind/relation filtering.@material-ui/core version ^4.12.2 like all other in-repo packagessubstryarn add --cwd for app & backendyarn add --cwd for app & backend@material-ui/core version ^4.12.2 like all other in-repo packages@material-ui/core version ^4.12.2 like all other in-repo packagescreateBackendPlugin.EventParams typed for implementing tidier event handling.substryarn add --cwd for app & backendWelcomeTitle to not be the right size when passed to the title property of the <Header> component. A Storybook entry was also added for the WelcomeTitleyarn add --cwd for app & backendcreateBackendPlugin.@kubernetes/client-node to 0.18.1.@kubernetes/client-node to 0.18.1.LinksGroup to use Link over ListItem as this makes the links more obvious and follows the pattern already used in the GroupProfileCard. Also updated the GroupProfileCard ExtraDetails story in Storybook to enable the showLinks feature with this off there is no difference between it and the default story.@material-ui/core version ^4.12.2 like all other in-repo packagesreadOnly property (<PagerDutyCard readOnly />) for suppressing the rendering of the "Create Incident" button from the Backstage UI.createBackendPlugin.@material-ui/core version ^4.12.2 like all other in-repo packagessubstrcreateBackendPlugin.@backstage/plugin-scaffolder-node package for some functionality@backstage/plugin-scaffolder-node package for some functionality@backstage/plugin-scaffolder-node package for some functionality@backstage/plugin-scaffolder-node package for some functionalitydecodeElasticSearchPageCursor utility functionyarn add --cwd for app & backend4024b37449: TechInsightsApi interface now has getFactSchemas() method. TechInsightsClient now implements method getFactSchemas().
BREAKING FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common
These changes are required if you were importing this type directly.
- import { FactSchema } from '@backstage/plugin-tech-insights-node';
+ import { FactSchema } from '@backstage/plugin-tech-insights-common';
Updated dependencies
4024b37449: TechInsightsApi interface now has getFactSchemas() method. TechInsightsClient now implements method getFactSchemas().
BREAKING FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common
These changes are required if you were importing this type directly.
- import { FactSchema } from '@backstage/plugin-tech-insights-node';
+ import { FactSchema } from '@backstage/plugin-tech-insights-common';
Updated dependencies
4024b37449: TechInsightsApi interface now has getFactSchemas() method. TechInsightsClient now implements method getFactSchemas().
BREAKING FactSchema type moved from @backstage/plugin-tech-insights-node into @backstage/plugin-tech-insights-common
These changes are required if you were importing this type directly.
- import { FactSchema } from '@backstage/plugin-tech-insights-node';
+ import { FactSchema } from '@backstage/plugin-tech-insights-common';
Updated dependencies
acf6c8c10b: Deprecate RadarEntry.url - use RadarEntry.links instead
- url: 'https://www.javascript.com/',
key: 'javascript',
id: 'javascript',
title: 'JavaScript',
quadrant: 'languages',
links: [
+ {
+ url: 'https://www.javascript.com/',
+ title: 'Learn more',
+ },
],
18024a231c: Allow to set additional links to the entry description.
Updated dependencies
@material-ui/core version ^4.12.2 like all other in-repo packagesmkdocs.yml configuration file when none is providedd950d3e217: Depend on @material-ui/core version ^4.12.2 like all other in-repo packages
4660b63947: Create a TechDocs <LightBox/> addon that allows users to open images in a light-box on documentation pages, they can navigate between images if there are several on one page.
Here's an example on how to use it in a Backstage app:
import {
DefaultTechDocsHome,
TechDocsIndexPage,
TechDocsReaderPage,
} from '@backstage/plugin-techdocs';
import { TechDocsAddons } from '@backstage/plugin-techdocs-react/alpha';
+import { LightBox } from '@backstage/plugin-techdocs-module-addons-contrib';
const AppRoutes = () => {
<FlatRoutes>
// other plugin routes
<Route path="/docs" element={<TechDocsIndexPage />}>
<DefaultTechDocsHome />
</Route>
<Route
path="/docs/:namespace/:kind/:name/*"
element={<TechDocsReaderPage />}
>
<TechDocsAddons>
+ <LightBox />
</TechDocsAddons>
</Route>
</FlatRoutes>;
};
Updated dependencies
createBackendPlugin.yarn add --cwd for app & backend