# Release v1.2.0 ## @backstage/plugin-techdocs-addons-test-utils@1.0.0 ### Major Changes - 0ad901569f: The TechDocs Addon framework is now generally available. ### Minor Changes - 52fddad92d: Introducing a package with utilities to help test TechDocs Addons. ### Patch Changes - f84e0e2818: Fixed a bug preventing testing of TechDocs Addons whose dom contained `` tags. - 7c398c6473: The `TechDocsAddonTester` class may now be extended if custom test configuration is needed. - 614bd96e2a: Fixed a type bug preventing `buildAddonsInTechDocs().withApis()` from being called with multiple partial API implementations. - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/test-utils@1.1.0 - @backstage/plugin-techdocs@1.1.1 - @backstage/core-plugin-api@1.0.2 - @backstage/plugin-catalog@1.2.0 - @backstage/integration-react@1.1.0 - @backstage/plugin-techdocs-react@1.0.0 - @backstage/plugin-search-react@0.2.0 - @backstage/core-app-api@1.0.2 ## @backstage/plugin-techdocs-module-addons-contrib@1.0.0 ### Major Changes - 0ad901569f: The TechDocs Addon framework is now generally available. ### Minor Changes - 5f4dbd2b52: A package for contributed TechDocs addons. In this release it will introduce the ReportIssue addon, which lets you select text and open a GitHub/Gitlab issue. ### Patch Changes - 10d86dedc0: Improved inline/type documentation for the addon. - 52419be116: Create a TechDocs `` addon that allows users to set a font size in the browser's local storage for the text of documentation pages. Here's an example on how to use it in a Backstage app: ```diff import { DefaultTechDocsHome, TechDocsIndexPage, TechDocsReaderPage, } from '@backstage/plugin-techdocs'; import { TechDocsAddons } from '@backstage/plugin-techdocs-react/alpha'; +import { TextSize } from '@backstage/plugin-techdocs-module-addons-contrib'; const AppRoutes = () => { // other plugin routes }> } > + ; }; ``` - 075a9a067b: Updated the return type of `createTechDocsAddonExtension` to better reflect the fact that passing children to Addon components is not a valid use-case. - c25e880e36: Introducing the Expandable Navigation addon, which lets you expand and collapse the TechDocs main navigation and store your preference in local storage. - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/integration@1.2.0 - @backstage/core-plugin-api@1.0.2 - @backstage/integration-react@1.1.0 - @backstage/plugin-techdocs-react@1.0.0 ## @backstage/plugin-techdocs-react@1.0.0 ### Major Changes - 0ad901569f: The TechDocs Addon framework is now generally available. ### Patch Changes - 52419be116: Create a new addon location called "Settings", it is designed for addons that allow users to customize the reading experience in documentation pages. Usage example: ```tsx const TextSize = techdocsModuleAddonsContribPlugin.provide( createTechDocsAddonExtension({ name: 'TextSize', location: TechDocsAddonLocations.Settings, component: TextSizeAddon, }), ); ``` - c25e880e36: Added overload signatures for `createTechDocsAddonExtension` to handle TechDocs addons without props. - 52fddad92d: The `TechDocsStorageApi` and its associated ref are now exported by `@backstage/plugin-techdocs-react`. The API interface, ref, and types are now deprecated in `@backstage/plugin-techdocs` and will be removed in a future release. - 075a9a067b: Updated the return type of `createTechDocsAddonExtension` to better reflect the fact that passing children to Addon components is not a valid use-case. - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/core-plugin-api@1.0.2 - @backstage/catalog-model@1.0.2 ## @backstage/integration@1.2.0 ### Minor Changes - e295ce87de: added the possibility to handle raw Gitlab URLs with nested namespaces - 6673babab9: Gerrit UrlReader: Implemented `readTree` - 1b4e1e2306: Split `bitbucket` integration into `bitbucketCloud` and `bitbucketServer` (backwards compatible). In order to migrate to the new integration configs, move your configs from `integrations.bitbucket` to `integrations.bitbucketCloud` or `integrations.bitbucketServer`. Migration example: **Before:** ```yaml integrations: bitbucket: - host: bitbucket.org username: bitbucket_user appPassword: app-password - host: bitbucket-server.company.com token: my-token ``` **After:** ```yaml integrations: bitbucketCloud: - username: bitbucket_user appPassword: app-password bitbucketServer: - host: bitbucket-server.company.com token: my-token ``` - 566407bf8a: Gerrit Integration: Added the `getGerritProjectsApiUrl` function ### Patch Changes - Updated dependencies - @backstage/config@1.0.1 ## @backstage/integration-react@1.1.0 ### Minor Changes - 1b4e1e2306: Split `bitbucket` integration into `bitbucketCloud` and `bitbucketServer` (backwards compatible). In order to migrate to the new integration configs, move your configs from `integrations.bitbucket` to `integrations.bitbucketCloud` or `integrations.bitbucketServer`. Migration example: **Before:** ```yaml integrations: bitbucket: - host: bitbucket.org username: bitbucket_user appPassword: app-password - host: bitbucket-server.company.com token: my-token ``` **After:** ```yaml integrations: bitbucketCloud: - username: bitbucket_user appPassword: app-password bitbucketServer: - host: bitbucket-server.company.com token: my-token ``` ### Patch Changes - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/integration@1.2.0 - @backstage/core-plugin-api@1.0.2 - @backstage/config@1.0.1 ## @backstage/test-utils@1.1.0 ### Minor Changes - 1da8b248c2: Added the options parameter to `renderWithEffects`, which if forwarded to the `render` function from `@testling-library/react`. Initially only the `wrapper` option is supported. - 1da8b248c2: Added `createTestAppWrapper`, which returns a component that can be used as the `wrapper` option for `render` or `renderWithEffects`. ### Patch Changes - 1da8b248c2: Fixed `renderInTestApp` so that it is able to re-render the result without removing the app wrapping. - 7a5ddfd595: Added missing `Routes` element to wrap the `Route` elements of the test app wrapping. - 7a5ddfd595: The internal elements created as part of the `mountedRoutes` implementation are now hidden during rendering. - Updated dependencies - @backstage/core-plugin-api@1.0.2 - @backstage/config@1.0.1 - @backstage/core-app-api@1.0.2 - @backstage/plugin-permission-common@0.6.1 - @backstage/plugin-permission-react@0.4.1 ## @backstage/plugin-adr@0.1.0 ### Minor Changes - e73075a301: Implement ADR plugin ### Patch Changes - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/plugin-adr-common@0.1.0 - @backstage/core-plugin-api@1.0.2 - @backstage/plugin-catalog-react@1.1.0 - @backstage/integration-react@1.1.0 ## @backstage/plugin-adr-backend@0.1.0 ### Minor Changes - e73075a301: Implement ADR plugin ### Patch Changes - Updated dependencies - @backstage/backend-common@0.13.3 - @backstage/plugin-adr-common@0.1.0 - @backstage/integration@1.2.0 - @backstage/config@1.0.1 - @backstage/plugin-search-common@0.3.4 - @backstage/catalog-client@1.0.2 - @backstage/catalog-model@1.0.2 ## @backstage/plugin-adr-common@0.1.0 ### Minor Changes - e73075a301: Implement ADR plugin ### Patch Changes - Updated dependencies - @backstage/integration@1.2.0 - @backstage/plugin-search-common@0.3.4 - @backstage/catalog-model@1.0.2 ## @backstage/plugin-auth-backend@0.14.0 ### Minor Changes - 2df2f01a29: Removed the explicit `disableRefresh` option from `OAuthAdapter`. Refresh can still be disabled for a provider by not implementing the `refresh` method. ### Patch Changes - cac3ba68a2: Fixed a bug that was introduced in `0.13.1-next.0` which caused the `ent` claim of issued tokens to be dropped. - 5d268623dd: Updates the OAuth2 Proxy provider to require less infrastructure configuration. The auth result object of the OAuth2 Proxy now provides access to the request headers, both through the `headers` object as well as `getHeader` method. The existing logic that parses and extracts the user information from ID tokens is deprecated and will be removed in a future release. See the OAuth2 Proxy provider documentation for more details. The OAuth2 Proxy provider now also has a default `authHandler` implementation that reads the display name and email from the incoming request headers. - 2df2f01a29: The Auth0 adapter no longer disables session refreshing. - cfc0f19699: Updated dependency `fs-extra` to `10.1.0`. - 787ae0d541: Add more common predefined sign-in resolvers to auth providers. Add the existing resolver to more providers (already available at `google`): - `providers.microsoft.resolvers.emailLocalPartMatchingUserEntityName()` - `providers.okta.resolvers.emailLocalPartMatchingUserEntityName()` Add a new resolver for simple email-to-email matching: - `providers.google.resolvers.emailMatchingUserEntityProfileEmail()` - `providers.microsoft.resolvers.emailMatchingUserEntityProfileEmail()` - `providers.okta.resolvers.emailMatchingUserEntityProfileEmail()` - 9ec4e0613e: Update to `jose` 4.6.0 - Updated dependencies - @backstage/backend-common@0.13.3 - @backstage/config@1.0.1 - @backstage/plugin-auth-node@0.2.1 - @backstage/catalog-client@1.0.2 - @backstage/catalog-model@1.0.2 ## @backstage/plugin-catalog@1.2.0 ### Minor Changes - 4274844a8c: Use InfoCardVariants on custom cards variant attribute - ceca63d149: Added the prop `NotFoundComponent` to `EntityLayout` which can be used to include a custom component when an entity is not found in the catalog ### Patch Changes - 051fc60258: Lighthouse was reporting this button as having invalid aria- values, as the popover doesn't exist until clicked. This adds additional labels to the button to make it valid aria - 2bcb0a0e2b: Sidebar NAV now includes aria-label. Component AboutField now uses h2 variant instead of subtitle2 (font properties unchanged) - 3a74e203a8: Updated search result components to support rendering content with highlighted matched terms - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/core-plugin-api@1.0.2 - @backstage/plugin-catalog-react@1.1.0 - @backstage/integration-react@1.1.0 - @backstage/plugin-search-react@0.2.0 - @backstage/plugin-search-common@0.3.4 - @backstage/catalog-client@1.0.2 - @backstage/catalog-model@1.0.2 - @backstage/plugin-catalog-common@1.0.2 ## @backstage/plugin-catalog-backend-module-gerrit@0.1.0 ### Minor Changes - 566407bf8a: Initial version of the `plugin-catalog-backend-module-gerrit` plugin ### Patch Changes - 57f684f59c: Fix incorrect main path in `publishConfig` - cfc0f19699: Updated dependency `fs-extra` to `10.1.0`. - Updated dependencies - @backstage/backend-common@0.13.3 - @backstage/plugin-catalog-backend@1.1.2 - @backstage/backend-tasks@0.3.1 - @backstage/integration@1.2.0 - @backstage/config@1.0.1 - @backstage/catalog-model@1.0.2 ## @backstage/plugin-catalog-react@1.1.0 ### Minor Changes - 4274844a8c: Use InfoCardVariants on custom cards variant attribute ### Patch Changes - 0418447669: Added menu parent role for menu items accessibility - b7514d19ff: Update the rendering of links in the entity inspector so that values starting with `https?://` are rendered as links as well. - b880c0e092: Fix `EntityTypeFilter` so generating available types is case insensitive - 57f41fb8d6: Make Menu item on filters accessible through keyboard - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/integration@1.2.0 - @backstage/core-plugin-api@1.0.2 - @backstage/catalog-client@1.0.2 - @backstage/catalog-model@1.0.2 - @backstage/plugin-catalog-common@1.0.2 - @backstage/plugin-permission-common@0.6.1 - @backstage/plugin-permission-react@0.4.1 ## @backstage/plugin-codescene@0.1.0 ### Minor Changes - 9bc6e9493f: Add CodeScene plugin ### Patch Changes - 95598f4fd5: Updated dependency `@testing-library/user-event` to `^14.0.0`. - e462112be5: Updated dependency `rc-progress` to `3.3.2`. - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/core-plugin-api@1.0.2 - @backstage/config@1.0.1 ## @backstage/plugin-scaffolder@1.2.0 ### Minor Changes - 06ab5218f9: Add new bitbucket(Cloud/Server) integrations to ScaffolderClient. ### Patch Changes - 8dce7d5244: Allow validation for custom field extension with type object - 70817dafc0: Updated dependency `use-immer` to `^0.7.0`. - ace230b599: Updated dependency `@codemirror/legacy-modes` to `^0.20.0`. - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/integration@1.2.0 - @backstage/core-plugin-api@1.0.2 - @backstage/plugin-scaffolder-common@1.1.0 - @backstage/plugin-catalog-react@1.1.0 - @backstage/integration-react@1.1.0 - @backstage/config@1.0.1 - @backstage/catalog-client@1.0.2 - @backstage/catalog-model@1.0.2 - @backstage/plugin-catalog-common@1.0.2 - @backstage/plugin-permission-react@0.4.1 ## @backstage/plugin-scaffolder-backend@1.2.0 ### Minor Changes - 9818112d12: Update the `github:publish` action to allow passing required status check contexts before merging to the main branch. - f8baf7df44: Added the ability to reference the user in the `template.yaml` manifest - 8d5a2238a9: Split `publish:bitbucket` into `publish:bitbucketCloud` and `publish:bitbucketServer`. In order to migrate from the deprecated action, you need to replace the use of action `publish:bitbucket` in your templates with the use of either `publish:bitbucketCloud` or `publish:bitbucketServer` - depending on which destination SCM provider you use. Additionally, these actions will not utilize `integrations.bitbucket` anymore, but `integrations.bitbucketCloud` or `integrations.bitbucketServer` respectively. You may or may not have migrated to these already. As described in a previous changeset, using these two replacement integrations configs will not compromise use cases which still rely on `integrations.bitbucket` as this was set up in a backwards compatible way. Additionally, please mind that the option `enableLFS` is only available (and always was) for Bitbucket Server use cases and therefore, is not even part of the schema for `publish:bitbucketCloud` anymore. ### Patch Changes - 0fc65cbf89: Override default commit message and author details in GitHub, Azure, bitbucket - cfc0f19699: Updated dependency `fs-extra` to `10.1.0`. - Updated dependencies - @backstage/backend-common@0.13.3 - @backstage/plugin-catalog-backend@1.1.2 - @backstage/integration@1.2.0 - @backstage/plugin-scaffolder-common@1.1.0 - @backstage/config@1.0.1 - @backstage/catalog-client@1.0.2 - @backstage/catalog-model@1.0.2 ## @backstage/plugin-scaffolder-backend-module-rails@0.4.0 ### Minor Changes - 3d001a3bcf: **BREAKING**: Added a new `allowedImageNames` option, which needs to list any image name for it to be allowed as `imageName` input. ### Patch Changes - Updated dependencies - @backstage/backend-common@0.13.3 - @backstage/plugin-scaffolder-backend@1.2.0 - @backstage/integration@1.2.0 - @backstage/config@1.0.1 ## @backstage/plugin-scaffolder-common@1.1.0 ### Minor Changes - f8baf7df44: Added the ability to reference the user in the `template.yaml` manifest ### Patch Changes - Updated dependencies - @backstage/catalog-model@1.0.2 ## @backstage/plugin-search-react@0.2.0 ### Minor Changes - bdbe620797: **BREAKING**: `SearchContextProviderForStorybook` and `SearchApiProviderForStorybook` has been deleted. New mock implementation of the `SearchApi` introduced. If you need to mock the api we recommend you to do the following: ```tsx import { searchApiRef, MockSearchApi, SearchContextProvider, } from '@backstage/plugin-search-react'; import { TestApiProvider } from '@backstage/test-utils'; ; ``` ### Patch Changes - 11a46863de: Export `useSearchContextCheck` hook to check if the search context is available - a307a14be0: Removed dependency on `@backstage/core-app-api`. - 3a74e203a8: Updated search result components to support rendering content with highlighted matched terms - Updated dependencies - @backstage/core-plugin-api@1.0.2 - @backstage/plugin-search-common@0.3.4 ## @backstage/plugin-tech-insights-backend@0.4.0 ### Minor Changes - 3333e20b27: **BREAKING**: The `buildTechInsightsContext` function now takes an additional field in its options argument: `tokenManager`. This is an instance of `TokenManager`, which can be found in your backend initialization code's `env`. ```diff const builder = buildTechInsightsContext({ logger: env.logger, config: env.config, database: env.database, discovery: env.discovery, scheduler: env.scheduler, + tokenManager: env.tokenManager, factRetrievers: [ /* ... */ ], }); ``` ### Patch Changes - Updated dependencies - @backstage/backend-common@0.13.3 - @backstage/backend-tasks@0.3.1 - @backstage/plugin-tech-insights-node@0.3.0 - @backstage/config@1.0.1 - @backstage/catalog-client@1.0.2 - @backstage/catalog-model@1.0.2 ## @backstage/plugin-tech-insights-node@0.3.0 ### Minor Changes - 58e2c46151: **BREAKING**: The `FactRetrieverContext` type now contains an additional field: `tokenManager`. ### Patch Changes - Updated dependencies - @backstage/backend-common@0.13.3 - @backstage/config@1.0.1 ## @backstage/app-defaults@1.0.2 ### Patch Changes - Updated dependencies - @backstage/core-components@0.9.4 - @backstage/core-plugin-api@1.0.2 - @backstage/core-app-api@1.0.2 - @backstage/plugin-permission-react@0.4.1 ## @backstage/backend-common@0.13.3 ### Patch Changes - e0a6360b80: Added a `stream()` method to complement the `buffer()` method on `ReadUrlResponse`. A `ReadUrlResponseFactory` utility class is now also available, providing a simple, consistent way to provide a valid `ReadUrlResponse`. This method, though optional for now, will be required on the responses of `UrlReader.readUrl()` implementations in a future release. - 4b811aafce: Implemented the `UrlReader.search()` method for Google Cloud Storage. Due to limitations in the underlying storage API, only prefix-based searches are supported right now (for example, `https://storage.cloud.google.com/your-bucket/some-path/*`). - 6673babab9: Gerrit integration: Added optional `cloneUrl` string to config. - 75bf9e1da9: Split BitbucketUrlReader into BitbucketCloudUrlReader and BitbucketServerUrlReader. Backwards compatible. - 28b0e4ddef: Update types to match the new version of `@keyv/redis` - 5fcbd86960: **DEPRECATION**: Server-to-server authentication tokens issued from a `TokenManager` (specifically, `ServerTokenManager`) now has an expiry time set, for one hour in the future from when issued. This improves security. The ability to pass in and validate tokens that either have a missing `exp` claim, or an `exp` claim that expired in the past, is now deprecated. Trying to do so will lead to logged warnings, and in a future release will instead lead to errors. It was always the case that users of this interface were expected to call its `getToken()` method for every outgoing call and never hold on to any given token for reuse. But this now has become even more important advice to heed, and you should verify that you do not hold on to and reuse tokens such as these in your own code. - cfc0f19699: Updated dependency `fs-extra` to `10.1.0`. - 9ec4e0613e: Update to `jose` 4.6.0 - Updated dependencies - @backstage/integration@1.2.0 - @backstage/cli-common@0.1.9 - @backstage/config@1.0.1 - @backstage/config-loader@1.1.1 ## @backstage/backend-tasks@0.3.1 ### Patch Changes - 73480846dd: `TaskScheduleDefinition` has been updated to also accept an options object containing duration information in the form of days, hours, seconds and so on. This allows for scheduling without importing `luxon`. ```diff -import { Duration } from 'luxon'; // omitted other code const schedule = env.scheduler.createScheduledTaskRunner({ - frequency: Duration.fromObject({ minutes: 10 }), - timeout: Duration.fromObject({ minutes: 15 }), + frequency: { minutes: 10 }, + timeout: { minutes: 15 }, // omitted other code }); ``` - cfd779a9bc: Scheduled tasks now have an optional `scope` field. If unset, or having the value `'global'`, the old behavior with cross-worker locking is retained. If having the value `'local'`, there is no coordination across workers and the behavior is more like `setInterval`. This can be used to replace usages of `runPeriodically` helpers. - ebbec677e1: Correctly set next run time for tasks - Updated dependencies - @backstage/backend-common@0.13.3 - @backstage/config@1.0.1 ## @backstage/backend-test-utils@0.1.24 ### Patch Changes - Updated dependencies - @backstage/backend-common@0.13.3 - @backstage/cli@0.17.1 - @backstage/config@1.0.1 ## @backstage/catalog-client@1.0.2 ### Patch Changes - Updated dependencies - @backstage/catalog-model@1.0.2 ## @backstage/catalog-model@1.0.2 ### Patch Changes - Updated dependencies - @backstage/config@1.0.1 ## @backstage/cli@0.17.1 ### Patch Changes - 52fb9920ac: Fixed coverage configuration when using `BACKSTAGE_NEXT_TESTS`. - 6cd1f50ae1: Extended lint rule to prevents imports of stories or tests from production code. - 97cce67ac7: Add instructions to `create-github-app` command. - 08e12a3a14: Add package global-agent to support behind a proxy for backstage-cli commands like versions:bump. - 4d8736eded: Changed Rollup configuration for TypeScript definition plugin to ignore `css`, `scss`, `sass`, `svg`, `eot`, `woff`, `woff2` and `ttf` files. - cfc0f19699: Updated dependency `fs-extra` to `10.1.0`. - 2737777e02: Added the ability to help a user get started with a new organization - 344ea56acc: Bump `commander` to version 9.1.0 - 8ab2a8226b: Updated the `create-github-app` command to throw an error if the organization argument is a user or a non existing organization. - 632be18bbc: Updated `create-github-app` command to prompt for read or write permissions to simplify setup. - Updated dependencies - @backstage/cli-common@0.1.9 - @backstage/config@1.0.1 - @backstage/release-manifests@0.0.3 - @backstage/config-loader@1.1.1 ## @backstage/cli-common@0.1.9 ### Patch Changes - 6e830352d4: Updated dependency `@types/node` to `^16.0.0`. ## @backstage/codemods@0.1.38 ### Patch Changes - 344ea56acc: Bump `commander` to version 9.1.0 - Updated dependencies - @backstage/cli-common@0.1.9 ## @backstage/config@1.0.1 ### Patch Changes - 6e830352d4: Updated dependency `@types/node` to `^16.0.0`. ## @backstage/config-loader@1.1.1 ### Patch Changes - cfc0f19699: Updated dependency `fs-extra` to `10.1.0`. - 9e8ef53498: Handle empty config files gracefully - Updated dependencies - @backstage/cli-common@0.1.9 - @backstage/config@1.0.1 ## @backstage/core-app-api@1.0.2 ### Patch Changes - 1fae1f57c9: Fix SAML session schema to no longer require the (deprecated) id, to unbreak session data storage. - Updated dependencies - @backstage/core-plugin-api@1.0.2 - @backstage/config@1.0.1 ## @backstage/core-components@0.9.4 ### Patch Changes - ac19f82936: Added ARIA landmark `
` to Page component and added ARIA landmark `