Back to Backstage

Release v1.30.0

docs/releases/v1.30.0-changelog.md

1.51.0-next.2109.3 KB
Original Source

Release v1.30.0

Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.30.0

@backstage/[email protected]

Minor Changes

  • da4fde5: BREAKING: Removed several deprecated service factories. These can instead be imported from @backstage/backend-defaults package.
  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.
  • 389f5a4: Remove deprecated urlReaderServiceFactory, please import from @backstage/backend-defaults/urlReader instead.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 389f5a4: BREAKING: Removed the following Url Reader deprecated exports:

    • UrlReader: Use UrlReaderService from @backstage/backend-plugin-api instead;
    • AzureUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • BitbucketUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • BitbucketCloudUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • BitbucketServerUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • GithubUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • GitlabUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • GerritUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • GiteaUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • HarnessUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • AwsS3UrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • FetchUrlReader: Import from @backstage/backend-defaults/urlReader instead;
    • UrlReaders: Import from @backstage/backend-defaults/urlReader instead;
    • UrlReadersOptions: Import from @backstage/backend-defaults/urlReader instead;
    • UrlReaderPredicateTuple: Import from @backstage/backend-defaults/urlReader instead;
    • FromReadableArrayOptions: Import from @backstage/backend-defaults/urlReader instead;
    • ReaderFactory: Import from @backstage/backend-defaults/urlReader instead;
    • ReadUrlOptions:Use UrlReaderServiceReadUrlOptions from @backstage/backend-plugin-api instead;
    • ReadUrlResponse: Use UrlReaderServiceReadUrlResponse from @backstage/backend-plugin-api instead;
    • ReadUrlResponseFactory: Import from @backstage/backend-defaults/urlReader instead;
    • ReadUrlResponseFactoryFromStreamOptions: Import from @backstage/backend-defaults/urlReader instead;
    • ReadTreeOptions: Use UrlReaderServiceReadTreeOptions from @backstage/backend-plugin-api instead;
    • ReadTreeResponse: Use UrlReaderServiceReadTreeResponse from @backstage/backend-plugin-api instead;
    • ReadTreeResponseFile: Use UrlReaderServiceReadTreeResponseFile from @backstage/backend-plugin-api instead;
    • ReadTreeResponseDirOptions: Use UrlReaderServiceReadTreeResponseDirOptions from @backstage/backend-plugin-api instead;
    • ReadTreeResponseFactory: Import from @backstage/backend-defaults/urlReader instead;
    • ReadTreeResponseFactoryOptions: Import from @backstage/backend-defaults/urlReader instead;
    • SearchOptions: Use UrlReaderServiceSearchOptions from @backstage/backend-plugin-api instead;
    • SearchResponse: Use UrlReaderServiceSearchResponse from @backstage/backend-plugin-api instead;
    • SearchResponseFile: Use UrlReaderServiceSearchResponseFile from @backstage/backend-plugin-api instead.

Patch Changes

  • ba8571e: Setup user agent header for AWS sdk clients, this enables users to better track API calls made from Backstage to AWS APIs through things like CloudTrail.

  • 93095ee: Make sure node-fetch is version 2.7.0 or greater

  • 6795e33: This package is marked as deprecated and will be removed in a near future, please follow the deprecated instructions for the exports you still use.

  • 7e13b7a: The remaining exports in the package have now been deprecated:

    • cacheToPluginCacheManager
    • createLegacyAuthAdapters
    • LegacyCreateRouter
    • legacyPlugin
    • loggerToWinstonLogger
    • makeLegacyPlugin

    Users of these export should fully migrate to the new backend system.

  • ddde5fe: Internal type refactor.

  • b63d378: export createConfigSecretEnumerator from @backstage/backend-common instead of @backstage/backend-app-api.

  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 389f5a4: BREAKING Deleted the following deprecated UrlReader exports

    • ReadUrlOptions: Use UrlReaderServiceReadUrlOptions instead;
    • ReadUrlResponse: Use UrlReaderServiceReadUrlResponse instead;
    • ReadTreeOptions: Use UrlReaderServiceReadTreeOptions instead;
    • ReadTreeResponse: Use UrlReaderServiceReadTreeResponse instead;
    • ReadTreeResponseFile: Use UrlReaderServiceReadTreeResponseFile instead;
    • ReadTreeResponseDirOptions: Use UrlReaderServiceReadTreeResponseDirOptions instead;
    • SearchOptions: Use UrlReaderServiceSearchOptions instead;
    • SearchResponse: Use UrlReaderServiceSearchResponse instead;
    • SearchResponseFile: Use UrlReaderServiceSearchResponseFile instead.
  • 7c5f3b0: The createServiceRef function now accepts a new boolean multiple option. The multiple option defaults to false and when set to true, it enables that multiple implementation are installed for the created service ref.

    We're looking for ways to make it possible to augment services without the need to replace the entire service.

    Typical example of that being the ability to install support for additional targets for the UrlReader service without replacing the service itself. This achieves that by allowing us to define services that can have multiple simultaneous implementation, allowing the UrlReader implementation to depend on such a service to collect all possible implementation of support for external targets:

    diff
    // @backstage/backend-defaults
    
    + export const urlReaderFactoriesServiceRef = createServiceRef<ReaderFactory>({
    +   id: 'core.urlReader.factories',
    +   scope: 'plugin',
    +   multiton: true,
    + });
    
    ...
    
    export const urlReaderServiceFactory = createServiceFactory({
      service: coreServices.urlReader,
      deps: {
        config: coreServices.rootConfig,
        logger: coreServices.logger,
    +   factories: urlReaderFactoriesServiceRef,
      },
    -  async factory({ config, logger }) {
    +  async factory({ config, logger, factories }) {
        return UrlReaders.default({
          config,
          logger,
    +     factories,
        });
      },
    });
    

    With that, you can then add more custom UrlReader factories by installing more implementations of the urlReaderFactoriesServiceRef in your backend instance. Something like:

    ts
    // packages/backend/index.ts
    import { createServiceFactory } from '@backstage/backend-plugin-api';
    import { urlReaderFactoriesServiceRef } from '@backstage/backend-defaults';
    ...
    
    backend.add(createServiceFactory({
      service: urlReaderFactoriesServiceRef,
      deps: {},
      async factory() {
        return CustomUrlReader.factory;
      },
    }));
    
    ...
    
    
  • c99c620: BREAKING Removed the following deprecated types:

    • ServiceRefConfig use ServiceRefOptions
    • RootServiceFactoryConfig use RootServiceFactoryOptions
    • PluginServiceFactoryConfig use PluginServiceFactoryOptions

Patch Changes

  • 6061061: Added createBackendFeatureLoader, which can be used to create an installable backend feature that can in turn load in additional backend features in a dynamic way.

  • ba9abf4: The SchedulerService now allows tasks with frequency: { trigger: 'manual' }. This means that the task will not be scheduled, but rather run only when manually triggered with SchedulerService.triggerTask.

  • 8b13183: Added createBackendFeatureLoader, which can be used to programmatically select and install backend features.

    A feature loader can return an list of features to be installed, for example in the form on an Array or other for of iterable, which allows for the loader to be defined as a generator function. Both synchronous and asynchronous loaders are supported.

    Additionally, a loader can depend on services in its implementation, with the restriction that it can only depend on root-scoped services, and it may not override services that have already been instantiated.

    ts
    const searchLoader = createBackendFeatureLoader({
      deps: {
        config: coreServices.rootConfig,
      },
      *loader({ config }) {
        // Example of a custom config flag to enable search
        if (config.getOptionalString('customFeatureToggle.search')) {
          yield import('@backstage/plugin-search-backend/alpha');
          yield import('@backstage/plugin-search-backend-module-catalog/alpha');
          yield import('@backstage/plugin-search-backend-module-explore/alpha');
          yield import('@backstage/plugin-search-backend-module-techdocs/alpha');
        }
      },
    });
    
  • ddde5fe: Fixed a type issue where plugin and modules depending on multiton services would not receive the correct type.

  • f011d1b: fix typo in getPluginRequestToken comments

  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • fc24d9e: This package is deprecated and will be removed in a near future, follow the instructions below to stop using it:

    • TaskScheduler: Please migrate to the new backend system, and depend on coreServices.scheduler from @backstage/backend-plugin-api instead, or use DefaultSchedulerService from `@backstage/backend-defaults;
    • TaskRunner: Please import SchedulerServiceTaskRunner from @backstage/backend-plugin-api instead;
    • TaskFunction: Please import SchedulerServiceTaskFunction from @backstage/backend-plugin-api instead;
    • TaskDescriptor: Please import SchedulerServiceTaskDescriptor from @backstage/backend-plugin-api instead;
    • TaskInvocationDefinition: Please import SchedulerServiceTaskInvocationDefinition from @backstage/backend-plugin-api instead;
    • TaskScheduleDefinition: Please import SchedulerServiceTaskFunction from @backstage/backend-plugin-api instead;
    • TaskScheduleDefinitionConfig: Please import SchedulerServiceTaskScheduleDefinitionConfig from @backstage/backend-plugin-api instead;
    • PluginTaskScheduler: Please use SchedulerService from @backstage/backend-plugin-api instead (most likely via coreServices.scheduler);
    • readTaskScheduleDefinitionFromConfig: Please import readSchedulerServiceTaskScheduleDefinitionFromConfig from @backstage/backend-plugin-api instead;
    • HumanDuration: Import TypesHumanDuration from @backstage/types instead.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 861f162: BREAKING: Removed these deprecated helpers:

    • setupRequestMockHandlers is removed; use registerMswTestHooks instead.
    • MockDirectoryOptions is removed; use CreateMockDirectoryOptions instead.

    Stopped exporting the deprecated and internal isDockerDisabledForTests helper.

    Removed get method from ServiceFactoryTester which is replaced by getSubject

Patch Changes

@backstage/[email protected]

Minor Changes

  • 34fa803: Introduce an optional spec.type attribute on the Domain and System entity kinds

Patch Changes

@backstage/[email protected]

Minor Changes

  • 32a38e1: BREAKING: The lockfile (yarn.lock) dependency analysis and mutations have been removed from several commands.

    The versions:bump command will no longer attempt to bump and deduplicate dependencies by modifying the lockfile, it will only update package.json files.

    The versions:check command has been removed, since its only purpose was verification and mutation of the lockfile. We recommend using the yarn dedupe command instead, or the yarn-deduplicate package if you're using Yarn classic.

    The check that was built into the package start command has been removed, it will no longer warn about lockfile mismatches.

    The packages in the Backstage ecosystem handle package duplications much better now than when these CLI features were first introduced, so the need for these features has diminished. By removing them, we drastically reduce the integration between the Backstage CLI and Yarn, making it much easier to add support for other package managers in the future.

Patch Changes

  • 7eb08a6: Add frontend-dynamic-container role to eslint config factory
  • b2d97fd: Fixing loading of additional config files with new ConfigSources
  • fbc7819: Use ES2022 in CLI bundler
  • 93095ee: Make sure node-fetch is version 2.7.0 or greater
  • 6d898d8: Switched the process polyfill to use require.resolve for greater compatibility.
  • e53074f: Updated default backend plugin to use RootConfigService instead of Config. This also removes the dependency on @backstage/config as it's no longer used.
  • ee2b0e5: The experimental module federation build now has the ability to force the use of development versions of react and react-dom by setting the FORCE_REACT_DEVELOPMENT flag.
  • 239dffc: Remove usage of deprecated functionality from @backstage/config-loader
  • e6e7d86: Switched the target from 'ES2022' to 'es2022' for better compatibility with older versions of swc.
  • 2ced236: Updated dependency @module-federation/enhanced to 0.3.1
  • 0eedec3: Add support for dynamic plugins via the EXPERIMENTAL_MODULE_FEDERATION environment variable when running yarn start.
  • adabb40: New command now supports setting package license
  • dc4fb4f: Fix for repo build --all not properly detecting the experimental public entry point.
  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • 274428f: Add configuration key to File and Remote ConfigSources that enables configuration of parsing logic. Previously limited to yaml, these ConfigSources now allow for a multitude of parsing options (e.g. JSON).

Patch Changes

  • 93095ee: Make sure node-fetch is version 2.7.0 or greater
  • 1edd6c2: The env option of ConfigSources.default now correctly allows undefined members.
  • 493feac: Add boolean allowMissingDefaultConfig option to ConfigSources.default and ConfigSources.defaultForTargets, which results in omission of a ConfigSource for the default app-config.yaml configuration file if it's not present.
  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 72754db: BREAKING: All types of route refs are always considered optional by useRouteRef, which means the caller must always handle a potential undefined return value. Related to this change, the optional option from createExternalRouteRef has been removed, since it is no longer necessary.

    This is released as an immediate breaking change as we expect the usage of the new route refs to be extremely low or zero, since plugins that support the new system will still use route refs and useRouteRef from @backstage/core-plugin-api in combination with convertLegacyRouteRef from @backstage/core-compat-api.

Patch Changes

  • 6f72c2b: Fixing issue with extension blueprints inputs merging.

  • 210d066: Added support for using the params in other properties of the createExtensionBlueprint options by providing a callback.

  • 9b356dc: Renamed createPlugin to createFrontendPlugin. The old symbol is still exported but deprecated.

  • a376559: Correct the TConfig type of data references to only contain config

  • 4e53ad6: Introduce a new way to encapsulate extension kinds that replaces the extension creator pattern with createExtensionBlueprint

    This allows the creation of extension instances with the following pattern:

    tsx
    // create the extension blueprint which is used to create instances
    const EntityCardBlueprint = createExtensionBlueprint({
      kind: 'entity-card',
      attachTo: { id: 'test', input: 'default' },
      output: [coreExtensionData.reactElement],
      factory(params: { text: string }) {
        return [coreExtensionData.reactElement(<h1>{params.text}</h1>)];
      },
    });
    
    // create an instance of the extension blueprint with params
    const testExtension = EntityCardBlueprint.make({
      name: 'foo',
      params: {
        text: 'Hello World',
      },
    });
    
  • 9b89b82: The ExtensionBoundary now by default infers whether it's routable from whether it outputs a route path.

  • e493020: Deprecated inputs and configSchema options for createComponentExtenion, these will be removed in a future release

  • 7777b5f: Added a new IconBundleBlueprint that lets you create icon bundle extensions that can be installed in an App in order to override or add new app icons.

    tsx
    import { IconBundleBlueprint } from '@backstage/frontend-plugin-api';
    
    const exampleIconBundle = IconBundleBlueprint.make({
      name: 'example-bundle',
      params: {
        icons: {
          user: MyOwnUserIcon,
        },
      },
    });
    
  • 99abb6b: Support overriding of plugin extensions using the new plugin.withOverrides method.

    tsx
    import homePlugin from '@backstage/plugin-home';
    
    export default homePlugin.withOverrides({
      extensions: [
        homePage.getExtension('page:home').override({
          *factory(originalFactory) {
            yield* originalFactory();
            yield coreExtensionData.reactElement(<h1>My custom home page</h1>);
          },
        }),
      ],
    });
    
  • 813cac4: Add an ExtensionBoundary.lazy function to create properly wrapped lazy-loading enabled elements, suitable for use with coreExtensionData.reactElement. The page blueprint now automatically leverages this.

  • a65cfc8: Add support for accessing extensions definitions provided by a plugin via plugin.getExtension(...). For this to work the extensions must be defined using the v2 format, typically using an extension blueprint.

  • 3be9aeb: Extensions have been changed to be declared with an array of inputs and outputs, rather than a map of named data refs. This change was made to reduce confusion around the role of the input and output names, as well as enable more powerful APIs for overriding extensions.

    An extension that was previously declared like this:

    tsx
    const exampleExtension = createExtension({
      name: 'example',
      inputs: {
        items: createExtensionInput({
          element: coreExtensionData.reactElement,
        }),
      },
      output: {
        element: coreExtensionData.reactElement,
      },
      factory({ inputs }) {
        return {
          element: (
            <div>
              Example
              {inputs.items.map(item => {
                return <div>{item.output.element}</div>;
              })}
            </div>
          ),
        };
      },
    });
    

    Should be migrated to the following:

    tsx
    const exampleExtension = createExtension({
      name: 'example',
      inputs: {
        items: createExtensionInput([coreExtensionData.reactElement]),
      },
      output: [coreExtensionData.reactElement],
      factory({ inputs }) {
        return [
          coreExtensionData.reactElement(
            <div>
              Example
              {inputs.items.map(item => {
                return <div>{item.get(coreExtensionData.reactElement)}</div>;
              })}
            </div>,
          ),
        ];
      },
    });
    
  • 34f1b2a: Support merging of inputs in extension blueprints, but stop merging output. In addition, the original factory in extension blueprints now returns a data container that both provides access to the returned data, but can also be forwarded as output.

  • 3fb421d: Added support to be able to define zod config schema in Blueprints, with built in schema merging from the Blueprint and the extension instances.

  • 2d21599: Added support for being able to override extension definitions.

    tsx
    const TestCard = EntityCardBlueprint.make({
      ...
    });
    
    TestCard.override({
      // override attachment points
      attachTo: { id: 'something-else', input: 'overridden' },
      // extend the config schema
      config: {
        schema: {
          newConfig: z => z.string().optional(),
        }
      },
      // override factory
      *factory(originalFactory, { inputs, config }){
        const originalOutput = originalFactory();
    
        yield coreExentsionData.reactElement(
          <Wrapping>
            {originalOutput.get(coreExentsionData.reactElement)}
          </Wrapping>
        );
      }
    });
    
    
  • 31bfc44: Extension data references can now be defined in a way that encapsulates the ID string in the type, in addition to the data type itself. The old way of creating extension data references is deprecated and will be removed in a future release.

    For example, the following code:

    ts
    export const myExtension =
      createExtensionDataRef<MyType>('my-plugin.my-data');
    

    Should be updated to the following:

    ts
    export const myExtension = createExtensionDataRef<MyType>().with({
      id: 'my-plugin.my-data',
    });
    
  • 6349099: Added config input type to the extensions

  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • 78c1329: Updated GitlabUrlReader.readUrl and GitlabUrlReader.readTree to accept a user-provided token, supporting both bearer and private tokens.

Patch Changes

  • c591670: Updated functions for getHarnessEditContentsUrl, getHarnessFileContentsUrl, getHarnessArchiveUrl, getHarnessLatestCommitUrl and parseHarnessUrl to handle account and org level urls
  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • 75d026a: Support for Cloudflare Custom Headers and Custom Cookie Auth Name

Patch Changes

@backstage/[email protected]

Minor Changes

  • 579afd0: BREAKING: Sign-in resolvers configured via .signIn.resolvers now take precedence over sign-in resolvers passed to signInResolver option of createOAuthProviderFactory. This effectively makes sign-in resolvers passed via the signInResolver the default one, which you can then override through configuration.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 6925dcb: Introduces the HasSubdomainsCard component that displays the subdomains of a given domain

Patch Changes

@backstage/[email protected]

Minor Changes

  • 163ba08: Deprecated RouterOptions, CatalogBuilder, and CatalogEnvironment. Please make sure to upgrade to the new backend system.
  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 0410fc9: By default, set notification as read when opening snackbar or web notification link

Patch Changes

@backstage/[email protected]

Minor Changes

  • def53a7: BREAKING Following NotificationTemplateRenderer methods now return a Promise and must be awaited: getSubject, getText and getHtml.

    Required changes and example usage:

    diff
    import { notificationsEmailTemplateExtensionPoint } from '@backstage/plugin-notifications-backend-module-email';
    import { Notification } from '@backstage/plugin-notifications-common';
    +import { getNotificationSubject, getNotificationTextContent, getNotificationHtmlContent } from 'my-notification-processing-library`
    export const notificationsModuleEmailDecorator = createBackendModule({
      pluginId: 'notifications',
      moduleId: 'email.templates',
      register(reg) {
        reg.registerInit({
          deps: {
            emailTemplates: notificationsEmailTemplateExtensionPoint,
          },
          async init({ emailTemplates }) {
            emailTemplates.setTemplateRenderer({
    -          getSubject(notification) {
    +          async getSubject(notification) {
    -            return `New notification from ${notification.source}`;
    +            const subject = await getNotificationSubject(notification);
    +            return `New notification from ${subject}`;
              },
    -          getText(notification) {
    +          async getText(notification) {
    -            return notification.content;
    +            const text = await getNotificationTextContent(notification);
    +            return text;
              },
    -          getHtml(notification) {
    +          async getHtml(notification) {
    -            return `<p>${notification.content}</p>`;
    +            const html = await getNotificationHtmlContent(notification);
    +            return html;
              },
            });
          },
        });
      },
    });
    

Patch Changes

@backstage/[email protected]

Minor Changes

  • 1552c33: Changed the way to display entities in MyGroupsPicker to use entityPresentationApi and make it consistent across scaffolder pickers
  • 3fca643: Added field extension RepoBranchPicker that supports autocompletion for Bitbucket

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.
  • dcd6a79: Added OpenTelemetry support to Scaffolder metrics

Patch Changes

@backstage/[email protected]

Minor Changes

  • 8839381: Add scaffolder option to display object items in separate rows on review page

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • fc24d9e: Stop using @backstage/backend-tasks as it will be deleted in near future.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 4698e1f: Initial release of the techdocs-common package.

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 0d16b52: Add access restrictions to the JWKS external access method config schema
  • 93095ee: Make sure node-fetch is version 2.7.0 or greater
  • 3b429fb: Added deprecation warning to urge users to perform the auth service migration or implement their own token manager service. See https://backstage.io/docs/tutorials/auth-service-migration for more information.
  • 7681b17: update the morgan middleware to use a custom format to prevent PII from being logged
  • 4e79d19: The createHealthRouter utility that allows you to create a health check router is now exported via @backstage/backend-defaults/rootHttpRouter.
  • ba9abf4: The SchedulerService now allows tasks with frequency: { trigger: 'manual' }. This means that the task will not be scheduled, but rather run only when manually triggered with SchedulerService.triggerTask.
  • 78c1329: Updated GitlabUrlReader.readUrl and GitlabUrlReader.readTree to accept a user-provided token, supporting both bearer and private tokens.
  • 8e967da: Fixed the routing of the new health check service, the health endpoints should now properly be available at /.backstage/health/v1/readiness and /.backstage/health/v1/liveness.
  • 7c5f3b0: Update the UrlReader service to depends on multiple instances of UrlReaderFactoryProvider service.
  • 81f930a: use formatted query to prevent chance of SQL-injection
  • 1d5f298: Avoid excessive numbers of error listeners on cache clients
  • Updated dependencies

@backstage/[email protected]

Patch Changes

  • 3a35172: Fix EventEmitter memory leak in the development utilities

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 9a46a81: The request to delete the session cookie when running the app in protected mode is now done with a plain fetch rather than FetchApi. This fixes a bug where the app would immediately try to sign-in again when removing the cookie during logout.
  • Updated dependencies

@backstage/[email protected]

Patch Changes

  • 72754db: Updated usage of useRouteRef, which can now always return undefined.
  • fe1fbb2: Migrating usages of the deprecated createExtension v1 format to the newer v2 format, and old create*Extension extension creators to blueprints.
  • 16cf96c: Both compatWrapper and convertLegacyRouteRef now support converting from the new system to the old.
  • 519b8e0: Added new utilities for converting legacy plugins and extensions to the new system. The convertLegacyPlugin option will convert an existing plugin to the new system, although you need to supply extensions for the plugin yourself. To help out with this, there is also a new convertLegacyPageExtension which converts an existing page extension to the new system.
  • 6349099: Added config input type to the extensions
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • c0a705d: Added the Kubernetes plugin to create-app
  • d7a0aa3: Bumped create-app version.
  • 93095ee: Make sure node-fetch is version 2.7.0 or greater
  • 6c1081c: Updated dockerfile and app-config.production.yaml to make it easier to get started with example data
  • bfeba46: Included permission config and enabled it out of the box
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 8209449: Added new APIs for testing extensions

  • 72754db: Updated usage of useRouteRef, which can now always return undefined.

  • 3be9aeb: Added support for v2 extensions, which declare their inputs and outputs without using a data map.

  • fe1fbb2: Migrating usages of the deprecated createExtension v1 format to the newer v2 format, and old create*Extension extension creators to blueprints.

  • 2d21599: Added support for being able to override extension definitions.

    tsx
    const TestCard = EntityCardBlueprint.make({
      ...
    });
    
    TestCard.override({
      // override attachment points
      attachTo: { id: 'something-else', input: 'overridden' },
      // extend the config schema
      config: {
        schema: {
          newConfig: z => z.string().optional(),
        }
      },
      // override factory
      *factory(originalFactory, { inputs, config }){
        const originalOutput = originalFactory();
    
        yield coreExentsionData.reactElement(
          <Wrapping>
            {originalOutput.get(coreExentsionData.reactElement)}
          </Wrapping>
        );
      }
    });
    
    
  • c00e1a0: Deprecate the .render method of the createExtensionTester in favour of using renderInTestApp directly.

    tsx
    import {
      renderInTestApp,
      createExtensionTester,
    } from '@backstage/frontend-test-utils';
    
    const tester = createExtensionTester(extension);
    
    const { getByTestId } = renderInTestApp(tester.reactElement());
    
    // or if you're not using `coreExtensionData.reactElement` as the output ref
    const { getByTestId } = renderInTestApp(tester.get(myComponentRef));
    
  • 264e10f: Deprecate existing ExtensionCreators in favour of their new Blueprint counterparts.

  • 264e10f: Refactor .make method on Blueprints into two different methods, .make and .makeWithOverrides.

    When using createExtensionBlueprint you can define parameters for the factory function, if you wish to take advantage of these parameters you should use .make when creating an extension instance of a Blueprint. If you wish to override more things other than the standard attachTo, name, namespace then you should use .makeWithOverrides instead.

    .make is reserved for simple creation of extension instances from Blueprints using higher level parameters, whereas .makeWithOverrides is lower level and you have more control over the final extension.

  • 6349099: Added config input type to the extensions

  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@techdocs/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 770ba02: ConsumingComponentsCard and ProvidingComponentsCard will now optionally accept columns to override which table columns are displayed
  • fe1fbb2: Migrating usages of the deprecated createExtension v1 format to the newer v2 format, and old create*Extension extension creators to blueprints.
  • ebfeb40: Added resolvers prop to AsyncApiDefinitionWidget. This allows to override the default http/https resolvers, for example to add authentication to requests to internal schema registries.
  • 4b6d2cb: Updated dependency @graphiql/react to ^0.23.0.
  • 6582799: Add tableOptions to all tables and additionally title to API tables.
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 72754db: Updated usage of useRouteRef, which can now always return undefined.
  • c7603e8: Deprecate the old pattern of create*Extension, and replace it with the equivalent Blueprint implementation instead
  • e493020: Fixing issue with the visualizer crashing when clicking on the detailed view because of routeRef parameters
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • c8f1cae: Add signIn to authentication provider configuration schema

  • 4ea354f: Added a signer configuration option to validate against the token claims. We strongly recommend that you set this value (typically on the format arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456) to ensure that the auth provider can safely check the authenticity of any incoming tokens.

    Example:

    diff
     auth:
       providers:
         awsalb:
           # this is the URL of the IdP you configured
           issuer: 'https://example.okta.com/oauth2/default'
           # this is the ARN of your ALB instance
    +      signer: 'arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456'
           # this is the region where your ALB instance resides
           region: 'us-west-2'
           signIn:
             resolvers:
               # typically you would pick one of these
               - resolver: emailMatchingUserEntityProfileEmail
               - resolver: emailLocalPartMatchingUserEntityName
    
  • 93095ee: Make sure node-fetch is version 2.7.0 or greater

  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • c8f1cae: Add signIn to authentication provider configuration schema
  • 13a9c63: Corrected the documentation for the GCP IAP auth module and updated the configuration to follow proxy configuration conventions by ignoring authEnv
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • c8f1cae: Add signIn to authentication provider configuration schema
  • 93095ee: Make sure node-fetch is version 2.7.0 or greater
  • 39f36a9: Updated the Microsoft authenticator to accurately define required scopes, but to also omit the required and additional scopes when requesting resource scopes.
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 3fca643: Added method listBranchesByRepository to BitbucketCloudClient
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 7bd27e1: Deprecate the old pattern of create*Extension, and replace it with the equivalent Blueprint implementation instead.
  • 31bfc44: Updated alpha definitions of extension data references.
  • 7ca331c: Correct EntityDisplayName's icon alignment with the text.
  • 9b89b82: Internal refactor to remove unnecessary routable prop in the implementation of the createEntityContentExtension alpha export.
  • bebd569: Fix extra divider displayed on user list picker component
  • 519b8e0: Added utilities for converting existing entity card and content extensions to the new frontend system. This is in particular useful when used in combination with the new convertLegacyPlugin utility from @backstage/core-compat-api.
  • d001a42: Fix label related accessibility issues with FavorityEntity
  • 012e3eb: Entity page extensions created for the new frontend system via the /alpha exports will now be enabled by default.
  • 6349099: Added config input type to the extensions
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • df784fe: Add the MetadataResponse type from @backstage/plugin-permission-node, since this type might be used in frontend code.
  • 137fa34: Add the MetadataResponseSerializedRule type from @backstage/plugin-permission-node, since this type might be used in frontend code.
  • Updated dependencies

@backstage/[email protected]

Patch Changes

  • df784fe: The MetadataResponse type has been moved to @backstage/plugin-permission-common to match the recent move of MetadataResponseSerializedRule, and should be imported from there going forward. To avoid an immediate breaking change, this type is still re-exported from this package, but is marked as deprecated and will be removed in a future release.
  • 5cd9878: The MetadataResponseSerializedRule type has been moved to @backstage/plugin-permission-common, and should be imported from there going forward. To avoid an immediate breaking change, this type is still re-exported from this package, but is marked as deprecated and will be removed in a future release.
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • da97131: Added test cases for gitlab:issues:create examples

  • fad1b90: Allow the createGitlabProjectVariableAction to use oauth tokens

  • aab708e: Added test cases for gitlab:issue:edit examples

  • ef742dc: Added test cases for gitlab:projectAccessToken:create example

  • 1ba4c2f: Added test cases for gitlab:pipeline:trigger examples

  • a6603e4: Add custom action for merge request: auto

    The Auto action selects the committed action between create and update.

    The Auto action fetches files using the /projects/repository/tree endpoint. After fetching, it checks if the file exists locally and in the repository. If it does, it chooses update; otherwise, it chooses create.

  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 69bd940: Use annotation constants from new techdocs-common package.
  • c7603e8: Deprecate the old pattern of create*Extension, and replace it with the equivalent Blueprint implementation instead
  • 27794d1: Allow for more granular control of TechDocsReaderPage styling. Theme overrides can now be provided to TechDocs without affecting the theme in other areas of Backstage.
  • 4490d73: Refactor TechDocs' mkdocs-redirects support.
  • 8543e72: TechDocs redirect feature now includes a notification to the user before they are redirected.
  • 67e76f2: TechDocs now supports the mkdocs-redirects plugin. Redirects defined using the mkdocs-redirect plugin will be handled automatically in TechDocs. Redirecting to external urls is not supported. In the case that an external redirect url is provided, TechDocs will redirect to the current documentation site home.
  • bdc5471: Fixed issue where header styles were incorrectly generated when themes used CSS variables to define font size.
  • 6349099: Added config input type to the extensions
  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

@internal/[email protected]

Patch Changes

@internal/[email protected]

Patch Changes

@internal/[email protected]

Patch Changes