docs/releases/v1.42.0-next.1-changelog.md
Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.42.0-next.1
29786f6: BREAKING: The NavLogoBlueprint has been removed and replaced by NavContentBlueprint, which instead replaces the entire navbar. The default navbar has also been switched to a more minimal implementation.
To use NavContentBlueprint to install new logos, you can use it as follows:
NavContentBlueprint.make({
params: {
component: ({ items }) => {
return compatWrapper(
<Sidebar>
<SidebarLogo />
<SidebarScrollWrapper>
{items.map((item, index) => (
<SidebarItem {...item} key={index} />
))}
</SidebarScrollWrapper>
</Sidebar>,
);
},
},
});
805c298: BREAKING: The ApiBlueprint has been updated to use the new advanced type parameters through the new defineParams blueprint option. This is an immediate breaking change that requires all existing usages of ApiBlueprint to switch to the new callback format. Existing extensions created with the old format are still compatible with the latest version of the plugin API however, meaning that this does not break existing plugins.
To update existing usages of ApiBlueprint, you remove the outer level of the params object and replace createApiFactory(...) with define => define(...).
For example, the following old usage:
ApiBlueprint.make({
name: 'error',
params: {
factory: createApiFactory({
api: errorApiRef,
deps: { alertApi: alertApiRef },
factory: ({ alertApi }) => {
return ...;
},
})
},
})
is migrated to the following:
ApiBlueprint.make({
name: 'error',
params: define =>
define({
api: errorApiRef,
deps: { alertApi: alertApiRef },
factory: ({ alertApi }) => {
return ...;
},
}),
})
805c298: Added support for advanced parameter types in extension blueprints. The primary purpose of this is to allow extension authors to use type inference in the definition of the blueprint parameters. This often removes the need for extra imports and improves discoverability of blueprint parameters.
This feature is introduced through the new defineParams option of createExtensionBlueprint, along with accompanying createExtensionBlueprintParams function to help implement the new format.
The following is an example of how to create an extension blueprint that uses the new option:
const ExampleBlueprint = createExtensionBlueprint({
kind: 'example',
attachTo: { id: 'example', input: 'example' },
output: [exampleComponentDataRef, exampleFetcherDataRef],
defineParams<T>(params: {
component(props: ExampleProps<T>): JSX.Element | null;
fetcher(options: FetchOptions): Promise<FetchResult<T>>;
}) {
// The returned params must be wrapped with `createExtensionBlueprintParams`
return createExtensionBlueprintParams(params);
},
*factory(params) {
// These params are now inferred
yield exampleComponentDataRef(params.component);
yield exampleFetcherDataRef(params.fetcher);
},
});
Usage of the above example looks as follows:
const example = ExampleBlueprint.make({
params: define => define({
component: ...,
fetcher: ...,
}),
});
This define => define(<params>) is also known as the "callback syntax" and is required if a blueprint is created with the new defineParams option. The callback syntax can also optionally be used for other blueprints too, which means that it is not a breaking change to remove the defineParams option, as long as the external parameter types remain compatible.
app/nav extension to use the new NavContentBlueprint, and removed support for extensions created with the now removed NavLogoBlueprint.ApiBlueprint.analyzeLocation method to catalogApiMockqueryparams if pagination mode is set to noneApiBlueprint.FormField type from /alpha in -react package, and internal refactor.4f99e10: DEPRECATION: The following types have been deprecated from this package and moved into @backstage/plugin-scaffolder-common and should be imported from there instead.
Action, ListActionsResponse, LogEvent, ScaffolderApi, ScaffolderDryRunOptions, ScaffolderDryRunResponse, ScaffolderGetIntegrationsListOptions, ScaffolderGetIntegrationsListResponse,
ScaffolderOutputLink, ScaffolderOutputText, ScaffolderScaffoldOptions, ScaffolderScaffoldResponse, ScaffolderStreamLogsOptions, ScaffolderTask, ScaffolderTaskOutput, ScaffolderTaskStatus,
ScaffolderUsageExample, TemplateFilter, TemplateGlobalFunction, TemplateGlobalValue, TemplateParameterSchema.
c08cbc4: Move Scaffolder API to OpenAPI
ApiBlueprint.FormField type from /alpha in -react package, and internal refactor.additionalAllowedURIProtocols to sanitizer configApiBlueprint.better-sqlite3 to v12better-sqlite3 to v12ApiBlueprint.d7a3d04: Created a flag for scaffolding apps using the new frontend system.
2a156e0: Updated the better-sqlite dependency from v9.0.0 to v13.0.0. You can apply this change to your instance by applying the following change to your packages/backend/package.json and running yarn install.
"dependencies": {
"app": "link:../app",
- "better-sqlite3": "^9.0.0",
+ "better-sqlite3": "^12.0.0",
"node-gyp": "^10.0.0",
"pg": "^8.11.3"
}
Updated dependencies
ApiBlueprint.stringEnums to mustache templatesbody to support Backstage UI (BUI) new theming system.motion to use gsap instead to make Backstage UI backward compatible with React 17.ApiBlueprint.ApiBlueprint.better-sqlite3 to v12ApiBlueprint.ApiBlueprint.ApiBlueprint.ApiBlueprint.ApiBlueprint.loggerToWinstonLogger from @backstage/backend-common.ApiBlueprint.description property in publish:gitlab:merge-request has been made optional again to comply with the GitLab API.ApiBlueprint.ApiBlueprint.