Back to Backstage

Release v1.40.0

docs/releases/v1.40.0-changelog.md

1.51.0-next.287.5 KB
Original Source

Release v1.40.0

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

@backstage/[email protected]

Major Changes

  • 33394db: BREAKING CHANGES

    Removal of deprecated re-exports from module packages.

    The following functions have been re-exported from the scaffolder-backend plugin for quite some time, and now it's time to clean them up. They've been moved as follows:

    • createPublishAzureAction should be imported from @backstage/plugin-scaffolder-backend-module-azure instead.

    • createPublishBitbucketCloudAction should be imported from @backstage/plugin-scaffolder-backend-module-bitbucket-cloud instead.

    • createPublishBitbucketServerAction and createPublishBitbucketServerPullRequestAction can be imported from @backstage/plugin-scaffolder-backend-module-bitbucket-server instead.

    • createPublishBitbucketAction should be imported from @backstage/plugin-scaffolder-backend-module-bitbucket instead.

    • createPublishGerritAction and createPublishGerritReviewAction can be imported from @backstage/plugin-scaffolder-backend-module-gerrit instead.

    • createGithubActionsDispatchAction, createGithubDeployKeyAction, createGithubEnvironmentAction, createGithubIssuesLabelAction, CreateGithubPullRequestActionOptions, createGithubRepoCreateAction, createGithubRepoPushAction, createGithubWebhookAction, and createPublishGithubAction can be imported from @backstage/plugin-scaffolder-backend-module-github instead.

    • createPublishGitlabAction should be imported from @backstage/plugin-scaffolder-backend-module-gitlab instead.

    • ActionContext. createTemplateAction, executeShellCommand, ExecuteShellCommandOptions, fetchContents, TaskSecrets, and TemplateAction should be imported from @backstage/plugin-scaffolder-node instead.

    • ScaffolderEntitiesProcessor should be imported from @backstage/plugin-catalog-backend-module-scaffolder-entity-model instead.

  • a8fcf04: BREAKING ALPHA: The /alpha export no longer exports the plugin. Please use import('@backstage/plugin-scaffolder-backend') instead as this has been removed.

    BREAKING CHANGES: The old createRouter function which was used in the old backend system has been removed along with the RouterOptions type.

  • 73b94d7: BREAKING CHANGES

    The following functions have been re-exported from the scaffolder-backend plugin for quite some time, and now it's time to clean them up. They've been moved as follows:

    • SerializedTask, SerializedTaskEvent, TaskBroker, TaskBrokerDispatchOptions, TaskBrokerDispatchResult, TaskCompletionState, TaskContext, TaskEventType, TaskStatus, TemplateFilter, and TemplateGlobal should be imported from @backstage/plugin-scaffolder-node instead.

    • The deprecated copyWithoutRender option has been removed from fetch:template action. You should rename the option to copyWithoutTemplating instead.

  • 5863b04: BREAKING CHANGES

    • The createBuiltinActions method has been removed, as this should no longer be needed with the new backend system route, and was only useful when passing the default list of actions again in the old backend system. You should be able to rely on the default behaviour of the new backend system which is to merge the actions.

    • The createCatalogRegisterAction and createFetchCatalogEntityAction actions no longer require an AuthService, and now accepts a CatalogService instead of CatalogClient.

    Unless you're providing your own override action to the default, this should be a non-breaking change.

    You can migrate using the following if you're getting typescript errors:

    ts
    import { catalogServiceRef } from '@backstage/plugin-catalog-node';
    import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha';
    
    export const myModule = createBackendModule({
      pluginId: 'scaffolder',
      moduleId: 'test',
      register({ registerInit }) {
        registerInit({
          deps: {
            scaffolder: scaffolderActionsExtensionPoint,
            catalog: catalogServiceRef,
          },
          async init({ scaffolder, catalog }) {
            scaffolder.addActions(
              createCatalogRegisterAction({
                catalog,
              }),
              createFetchCatalogEntityAction({
                catalog,
                integrations,
              }),
            );
          },
        });
      },
    });
    

Minor Changes

  • 73b94d7: DEPRECATIONS

    The following types and implementations have been deprecated, either because they're no longer relevant, or because upcoming changes to the scaffolder-backend after 2.0.0 will influence the changes to these API surfaces.

    • CreateWorkerOptions
    • DatabaseTaskStore
    • DatabaseTaskStoreOptions
    • TaskManager
    • TaskStoreCreateTaskOptions
    • TaskStoreCreateTaskResult
    • TaskStoreEmitOptions
    • TaskStoreListEventsOptions
    • TaskStoreRecoverTaskOptions
    • TaskStoreShutDownTaskOptions

    There is no current path off deprecation, these types are going to be removed and rethought with a better way to define workers in the new backend system.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 3ccb7fc: Enhanced error handling in the auditor service factory to pass errors as objects. Aligned WinstonRootAuditorService with the default service factory's error handling.

Patch Changes

  • 1220cf8: Added new rate limit middleware to allow rate limiting requests to the backend

    If you are using the configure callback of the root HTTP router service and do NOT call applyDefaults() inside it, please see the relevant changes that were made, to see if you want to apply them as well to your custom configuration. Rate limiting can be turned on by adding the following configuration to app-config.yaml:

    yaml
    backend:
      rateLimit:
        window: 6s
        incomingRequestLimit: 100
    

    Plugin specific rate limiting can be configured by adding the following configuration to app-config.yaml:

    yaml
    backend:
      rateLimit:
        global: false # This will disable the global rate limiting
        plugin:
          catalog:
            window: 6s
            incomingRequestLimit: 100
    
  • c999c25: Added some default implementations for the experimental ActionsService and ActionsRegistryService under /alpha that allow registration of actions for a particular plugin.

  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • 664c07a: Added actionsRegistry and actions experimental services to /alpha to allow registration of distributed actions from plugins, and the ability to invoke these actions. You can use these services by including them like the following:

    ts
    import {
      actionsRegistryServiceRef,
      actionsServiceRef,
    } from '@backstage/backend-plugin-api/alpha';
    
    createBackendPlugin({
      pluginId: 'test-plugin',
      register({ registerInit }) {
        registerInit({
          deps: {
            actions: actionsServiceRef,
            actionsRegistry: actionsRegistryServiceRef,
          },
          async init({ actions, actionsRegistry }) {
            actionsRegistry.register({
              ...,
            });
    
            await actions.invoke(...);
          },
        });
      },
    });
    

Patch Changes

@backstage/[email protected]

Minor Changes

  • 6dfb7be: Added mockServices.permissions() that can return actual results.

  • c999c25: Added an actionsRegistryServiceMock and actionsServiceMock to /alpha export for the experimental services.

    This allows you to write tests for your actions by doing something similar to the following:

    ts
    import { actionsRegistryServiceMock } from '@backstage/backend-test-utils/alpha';
    
    const mockActionsRegistry = actionsRegistryServiceMock();
    const mockCatalog = catalogServiceMock({
      entities: [
       ...
      ],
    });
    
    createGetCatalogEntityAction({
      catalog: mockCatalog,
      actionsRegistry: mockActionsRegistry,
    });
    
    await expect(
      mockActionsRegistry.invoke({
        id: 'test:get-catalog-entity',
        input: { name: 'test' },
      }),
    ).resolves.toEqual(...)
    

Patch Changes

@backstage/[email protected]

Minor Changes

  • 621fac9: We are updating the default size of the Button component in Canon to be small instead of medium.
  • a842554: We set the default size for IconButton in Canon to be small instead of medium.
  • 35fd51d: Move TextField component to use react Aria under the hood. Introducing a new FieldLabel component to help build custom fields.
  • 78204a2: Breaking We are adding a new as prop on the Heading and Text component to make it easier to change the component tag. We are removing the render prop in favour of the as prop.
  • c49e335: TextField in Canon now has multiple label sizes as well as the capacity to hide label and description but still make them available for screen readers.
  • 24b45ef: Fixes spacing props on layout components and aligned on naming for the Grid component. You should now call the Grid root component using <Grid.Root /> instead of just <Grid />.

Patch Changes

  • 44df879: Add min-width: 0; by default on every Flex components in Canon to help support truncated texts inside flex elements.
  • ee6ffe6: Fix styling for the title4 prop on the Heading component in Canon.
  • f2f814a: Added a render prop to the Button component in Canon to use it as a link.
  • 98f02a6: Add new Switch component in Canon.
  • c94f8e0: The filter input in menu comboboxes should now always use the full width of the menu it's in.
  • 269316d: Remove leftover console.log from Container component.

@backstage/[email protected]

Minor Changes

  • eef0e83: Internal update to promote the modular CLI entrypoint to stable.

Patch Changes

  • d07fe35: Added user feedback when opening config docs in browser. The command now clearly indicates what it's doing and provides fallback instructions if the browser fails to open.
  • ce70439: The BACKSTAGE_CLI_EXPERIMENTAL_BUILD_CACHE flag has been removed. Existing users are encouraged to switch to EXPERIMENTAL_RSPACK instead.
  • 1d8f00b: Switched to using the ModuleFederationPlugin from @module-federation/enhanced/rspack for Rspack, rather than the built-in one.
  • 2b9633f: The experimental FORCE_REACT_DEVELOPMENT flag has been removed.
  • d8c4a54: Only use the caching Jest module loader for frontend packages in order to avoid breaking real ESM module imports.
  • d6d63c7: Updating the scaffolder action boilerplate to use new zod schema
  • e36e855: Added backstage.pluginId field in package.json to all default plugin package templates for the new command.
  • 1bab255: Internal refactor to combine alpha build and start modules.
  • 713e957: fix: merge eslint reports when using json format
  • 8a0164c: Fix an issue where some commands were not usable because of missing dist files
  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • 30474c4: Add .cache directory to shipped gitignore.

Patch Changes

  • d57a6f7: Bumped create-app version.
  • f628f44: Bumped create-app version.
  • 9c9faf2: Bumped create-app version.
  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • bf9a173: Add support for caching the per-package output from the package-docs command.

Patch Changes

  • 4bff5d0: Fixed a bug where linting would fail with the generated clients when defining top-level enum schema values.
  • 2d20024: Fix an issue where errors were not printed to console when running backstage-repo-tools schema openapi generate without the --watch flag.
  • e643ee4: Add missing highlight language for the package-docs command.
  • c83cd8b: Fixed some circular or otherwise unclear imports
  • a372bf1: Updated dependency @electric-sql/pglite to ^0.3.0.
  • Updated dependencies

@backstage/[email protected]

Minor Changes

  • 406acb6: Add support to customize the about card icon links via EntityIconLinkBlueprint and provide a default catalog view catalog source, launch scaffolder template and read techdocs docs icon links extensions.

    BREAKING ALPHA

    The Scaffolder launch template and TechDocs read documentation icons have been extracted from the default Catalog about card links and are now provided respectively by the Scaffolder and TechDocs plugins in the new frontend system. It means that they will not be available unless you install the TechDocs and Scaffolder plugins. Also If you are using translation for these icon link titles other than the default, you should now translate them using the scaffolder translation reference or the TechDocs translation reference (the translation keys are still the same, aboutCard.viewTechdocs and aboutCard.launchTemplate).

  • ec7b35d: Introduced backstage.io/techdocs-entity-path annotation which allows deep linking into another entities TechDocs in conjunction with backstage.io/techdocs-entity.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 2e7adf0: Implement the action get-catalog-entity with the ActionsRegistry

Patch Changes

@backstage/[email protected]

Minor Changes

  • 8a150bf: BREAKING: BitbucketCloudEntityProvider now accepts a CatalogService instead of a CatalogApi.

Patch Changes

@backstage/[email protected]

Minor Changes

  • eb8b3aa: Add validateLocationsExist option to avoid generating locations for catalog-info.yaml files that do not exist in the source repository.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 7c0dfb0: GitHub organization now matches in a case-insensitive manner when processing events.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 42bb3b8: BREAKING CHANGE: User and Group discovery will default to ingesting all users in sub groups that belong to the specified root group in config. Disable by setting restrictUsersToGroup: true in app-config under your module settings.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 406acb6: Introduces a new EntityIconLinkBlueprint that customizes the About card icon links on the Catalog entity page.

    The blueprint currently accepts a useProps hook as param and this function returns the following props that will be passed to the icon link component:

    NameDescriptionTypeDefault Value
    iconThe icon to display.JSX.ElementN/A
    labelThe label for the element.stringN/A
    titleThe title for the element.stringN/A
    disabledWhether the element is disabled.booleanfalse
    hrefThe URL to navigate to when the element is clicked.stringN/A
    onClickA function to call when the element is clicked.() => voidN/A

    Here is an usage example:

    tsx
    import { EntityIconLinkBlueprint } from '@backstage/plugin-catalog-react/alpha';
    //...
    
    EntityIconLinkBlueprint.make({
      name: 'my-icon-link',
      params: {
        useProps() {
          const { t } = useTranslationRef(myIconLinkTranslationRef);
          return {
            label: t('myIconLink.label'),
            icon: <MyIconLinkIcon />,
            href: '/my-plugin',
          };
        },
      },
    });
    

    Additionally, the app-config.yaml file allows you to override some of the default icon link parameters, including label and title values. Here's how to set them:

    yaml
    app:
      extensions:
        - entity-icon-link:my-plugin/my-icon-link:
            config:
              label: 'My Custom Icon Link label'
    

    Finally, you can disable all links if you want to hide the About card header completely (useful, for example, when links are displayed on separate cards). The header is hidden when no icon links extensions are enabled.

Patch Changes

@backstage/[email protected]

Minor Changes

  • b034b9d: Adds a new module kafka for plugin-events-backend

    The module introduces the KafkaConsumerClient which creates a Kafka client used to establish consumer connections. It also provides the KafkaConsumingEventPublisher, a consumer that subscribes to configured Kafka topics and publishes received messages to the Event Service.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 4ed0fb6: Initial implementation of an mcp-actions backend

Patch Changes

@backstage/[email protected]

Minor Changes

  • 6c972fe: Added information about the entityRef and taskId to the analytics events whenever is possible.
  • 3c59ece: New Frontend System Only: The Scaffolder plugin is now responsible for providing an entity icon link extension to launch templates from the catalog entity page.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 5863b04: BREAKING CHANGES

    The createGithubEnvironmentAction action no longer requires an AuthService, and now accepts a CatalogService instead of CatalogClient.

    Unless you're providing your own override action to the default, this should be a non-breaking change.

    You can migrate using the following if you're getting typescript errors:

    ts
    import { catalogServiceRef } from '@backstage/plugin-catalog-node';
    import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha';
    
    export const myModule = createBackendModule({
      pluginId: 'scaffolder',
      moduleId: 'test',
      register({ registerInit }) {
        registerInit({
          deps: {
            scaffolder: scaffolderActionsExtensionPoint,
            catalog: catalogServiceRef,
          },
          async init({ scaffolder, catalog }) {
            scaffolder.addActions(
              createGithubEnvironmentAction({
                catalog,
              }),
            );
          },
        });
      },
    });
    

Patch Changes

@backstage/[email protected]

Minor Changes

  • 5863b04: BREAKING CHANGES

    The legacy methods to define createTemplateActions have been replaced with the new native zod approaches for defining input and output schemas.

    You can migrate actions that look like the following with the below examples:

    ts
    // really old legacy json schema
    createTemplateAction<{ repoUrl: string }, { repoOutput: string }>({
      id: 'test',
      schema: {
        input: {
          type: 'object'
          required: ['repoUrl']
          properties: {
            repoUrl: {
              type: 'string',
              description: 'repository url description'
            }
          }
        }
      }
    });
    
    // old zod method
    createTemplateAction({
      id: 'test'
      schema: {
        input: {
          repoUrl: z.string({ description: 'repository url description' })
        }
      }
    })
    
    // new method:
    createTemplateAction({
      id: 'test',
      schema: {
        input: {
          repoUrl: z => z.string({ description: 'repository url description' })
        }
      }
    })
    
    // or for more complex zod types like unions
    createTemplateAction({
      id: 'test',
      schema: {
        input: z => z.object({
          repoUrl: z.string({ description: 'repository url description' })
        })
      }
    })
    

    This breaking change also means that logStream has been removed entirely from ActionsContext, and that the logger is now just a LoggerService implementation instead. There is no replacement for the logStream, if you wish to still keep using a logStream we recommend that you create your own stream that writes to ctx.logger instead.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 3cea7ee: BREAKING CHANGES

    Because of the removal of the logStream property to the ActionsContext this has been removed from the createMockActionContext method.

    You can remove this as it's no longer supported in the scaffolder actions.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 6c972fe: Added information about the entityRef and taskId to the analytics events whenever is possible.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 3c59ece: New Frontend System Only: The TechDocs plugin is now responsible for providing an entity icon link extension to read documentation from the catalog entity page.
  • ec7b35d: Introduced backstage.io/techdocs-entity-path annotation which allows deep linking into another entities TechDocs in conjunction with backstage.io/techdocs-entity.

Patch Changes

@backstage/[email protected]

Minor Changes

  • ec7b35d: Introduced backstage.io/techdocs-entity-path annotation which allows deep linking into another entities TechDocs in conjunction with backstage.io/techdocs-entity.

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

  • 098ef95: Fix custom rules package scanning performance.

  • 063b2d3: Added new eslint rule to restrict mixed plugin imports.

    New rule @backstage/no-mixed-plugin-imports disallows mixed imports between plugins that are mixing the backstage architecture. This rule forces that:

    • No imports from frontend plugins to backend plugins or other frontend plugins.
    • No imports from backend plugins to frontend plugins or other backend plugins.
    • No imports from common plugins to frontend or backend plugins.

    The current recommended configuration is giving a warning for mixed imports. This is to be changed in the future to an error so please adjust your workspace accordingly.

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 0169b23: Internal tweak to avoid circular dependencies

  • 9e3868f: Added a new optional info option to createFrontendPlugin that lets you provide a loaders for different sources of metadata information about the plugin.

    There are two available loaders. The first one is info.packageJson, which can be used to point to a package.json file for the plugin. This is recommended for any plugin that is defined within its own package, especially all plugins that are published to a package registry. Typical usage looks like this:

    ts
    export default createFrontendPlugin({
      pluginId: '...',
      info: {
        packageJson: () => import('../package.json'),
      },
    });
    

    The second loader is info.manifest, which can be used to point to an opaque plugin manifest. This MUST ONLY be used by plugins that are intended for use within a single organization. Plugins that are published to an open package registry should NOT use this loader. The loader is useful for adding additional internal metadata associated with the plugin, and it is up to the Backstage app to decide how these manifests are parsed and used. The default manifest parser in an app created with createApp from @backstage/frontend-defaults is able to parse the default catalog-info.yaml format and built-in fields such as spec.owner.

    Typical usage looks like this:

    ts
    export default createFrontendPlugin({
      pluginId: '...',
      info: {
        manifest: () => import('../catalog-info.yaml'),
      },
    });
    
  • 6f48f71: Added a new useAppNode hook, which can be used to get a reference to the AppNode from by the closest ExtensionBoundary.

  • 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

@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

@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

  • 087d51d: Export LDAP vendor types and instances for testing custom transformers

  • f07b0ad: Added the ability to configure disabling one side of the relations tree with LDAP.

    Groups have a member attribute and users have a memberOf attribute, however these can drift out of sync in some LDAP installations, leaving weird states in the Catalog as we collate these results together and deduplicate them.

    You can chose to optionally disable one side of these relationships, or even both by setting the respective mapping to null in your app-config.yaml for your groups and/or users:

    yaml
    catalog:
      providers:
        ldapOrg:
          default:
            target: ldaps://ds.example.net
            bind:
              dn: uid=ldap-reader-user,ou=people,ou=example,dc=example,dc=net
              secret: ${LDAP_SECRET}
            users:
              - dn: ou=people,ou=example,dc=example,dc=net
                options:
                  filter: (uid=*)
                map:
                  # this ensures that outgoing memberships from users is ignored
                  memberOf: null
            groups:
              - dn: ou=access,ou=groups,ou=example,dc=example,dc=net
                options:
                  filter: (&(objectClass=some-group-class)(!(groupType=email)))
                map:
                  description: l
                set:
                  metadata.customField: 'hello'
                map:
                  # this ensures that outgoing memberships from groups is ignored
                  members: null
    
  • 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

@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

  • 41d4d6e: Notifications are now automatically deleted after 1 year by default.

    There is a new scheduled task that runs every 24 hours to delete notifications older than 1 year. This can be configured by setting the notifications.retention in the app-config.yaml file.

    yaml
    notifications:
      retention: 1y
    

    If the retention is set to false, notifications will not be automatically deleted.

  • 8a150bf: Internal changes to switch to the non-alpha catalogServiceRef

  • 1fb5f06: Adds ability for user to turn on/off notifications for specific topics within an origin.

  • ef9ab82: Notifications API will now return user as null always for broadcast notifications

  • Updated dependencies

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

@backstage/[email protected]

Patch Changes

  • 1fb5f06: Adds ability for user to turn on/off notifications for specific topics within an origin.
  • 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

@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

  • ec7b35d: Introduced backstage.io/techdocs-entity-path annotation which allows deep linking into another entities TechDocs in conjunction with backstage.io/techdocs-entity.

@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

@internal/[email protected]

Patch Changes

@internal/[email protected]

Patch Changes

[email protected]

Patch Changes

[email protected]

Patch Changes

  • a0f9e4e: added functionality so that adding or updating a backstage dependency to a package would maintain the "backstage:^" placeholder for the version.
  • Updated dependencies

@internal/[email protected]

Patch Changes

@internal/[email protected]

Patch Changes