Back to Backstage

Release v1.36.0-next.0

docs/releases/v1.36.0-next.0-changelog.md

1.51.0-next.267.6 KB
Original Source

Release v1.36.0-next.0

Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.36.0-next.0

@backstage/[email protected]

Minor Changes

  • a4aa244: This change introduces the auditor service implementation details.

Patch Changes

@backstage/[email protected]

Minor Changes

  • a4aa244: This change introduces the auditor service definition.

Patch Changes

@backstage/[email protected]

Minor Changes

  • dd05a97: Added mocks for the new PermissionsRegistryService.
  • a4aa244: This change introduces mocks for the auditor service.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 65f4acc: This is the first alpha release for Canon. As part of this release we are introducing 5 layout components and 7 components. All theming is done through CSS variables.

@backstage/[email protected]

Minor Changes

  • cb76663: BREAKING: Add support for native ESM in Node.js code. This changes the behavior of dynamic import expressions in Node.js code. Typically this can be fixed by replacing import(...) with require(...), with an as typeof import(...) cast if needed for types. This is because dynamic imports will no longer be transformed to require(...) calls, but instead be left as-is. This in turn allows you to load ESM modules from CommonJS code using import(...).

    This change adds support for the following in Node.js packages, across type checking, package builds, runtime transforms and Jest tests:

    • Dynamic imports that load ESM modules from CommonJS code.
    • Both .mjs and .mts files as explicit ESM files, as well as .cjs and .cts as explicit CommonJS files.
    • Support for the "type": "module" field in package.json to indicate that the package is an ESM package.

    There are a few caveats to be aware of:

    • To enable support for native ESM in tests, you need to run the tests with the --experimental-vm-modules flag enabled, typically via NODE_OPTIONS='--experimental-vm-modules'.
    • Declaring a package as "type": "module" in package.json is supported, but in tests it will cause all local transitive dependencies to also be treated as ESM, regardless of whether they declare "type": "module" or not.
    • Node.js has an ESM interoperability layer with CommonJS that allows for imports from ESM to identify named exports in CommonJS packages. This interoperability layer is only enabled when importing packages with a .cts or .cjs extension. This is because the interoperability layer is not fully compatible with the NPM ecosystem, and would break package if it was enabled for .js files.
    • Dynamic imports of CommonJS packages will vary in shape depending on the runtime, i.e. test vs local development, etc. It is therefore recommended to avoid dynamic imports of CommonJS packages and instead use require, or to use the explicit CommonJS extensions as mentioned above. If you do need to dynamically import CommonJS packages, avoid using default exports, as the shape of them vary across different environments and you would otherwise need to manually unwrap the import based on the shape of the module object.

Patch Changes

@techdocs/[email protected]

Minor Changes

  • 8de3d2d: Allow configurable optional retries for publisher AWS S3 operations.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 8805f93: The catalog backend now supports the new PermissionsRegistryService, which can be used to add custom permission rules.
  • a4aa244: This change integrates the auditor service into the Catalog plugin.

Patch Changes

@backstage/[email protected]

Minor Changes

  • a4aa244: This change integrates the auditor service into the Scaffolder plugin.

Patch Changes

@backstage/[email protected]

Minor Changes

  • a4aa244: This change introduces an optional taskId property to TaskContext.

Patch Changes

@backstage/[email protected]

Minor Changes

  • 8de3d2d: Allow configurable optional retries for publisher AWS S3 operations.

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/plugin-auth-backend-module-bitbucket-server-provider@0.1.5-next.0

Patch Changes

@backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.5-next.0

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/plugin-catalog-backend-module-scaffolder-entity-model@0.2.5-next.0

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

@backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.6-next.0

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/plugin-search-backend-module-stack-overflow-collator@0.3.6-next.0

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

  • f4be934: Changed the base URL in addLinkClickListener from window.location.origin to app.baseUrl for improved path handling. This fixes an issue where Backstage, when running on a subpath, was unable to handle non-Backstage URLs of the same origin correctly.

  • 1f40e6b: Add optional props to TechDocCustomHome to allow for more flexibility:

    tsx
    import { TechDocsCustomHome } from '@backstage/plugin-techdocs';
    //...
    
    const options = { emptyRowsWhenPaging: false };
    const linkDestination = (entity: Entity): string | undefined => {
      return entity.metadata.annotations?.['external-docs'];
    };
    const techDocsTabsConfig = [
      {
        label: 'Recommended Documentation',
        panels: [
          {
            title: 'Golden Path',
            description: 'Documentation about standards to follow',
            panelType: 'DocsCardGrid',
            panelProps: { CustomHeader: () => <ContentHeader title='Golden Path'/> },
            filterPredicate: entity =>
              entity?.metadata?.tags?.includes('golden-path') ?? false,
          },
          {
            title: 'Recommended',
            description: 'Useful documentation',
            panelType: 'InfoCardGrid',
            panelProps: {
              CustomHeader: () => <ContentHeader title='Recommended' />
              linkDestination: linkDestination,
            },
            filterPredicate: entity =>
              entity?.metadata?.tags?.includes('recommended') ?? false,
          },
        ],
      },
      {
        label: 'Browse All',
        panels: [
          {
            description: 'Browse all docs',
            filterPredicate: filterEntity,
            panelType: 'TechDocsIndexPage',
            title: 'All',
            panelProps: { PageWrapper: React.Fragment, CustomHeader: React.Fragment, options: options },
          },
        ],
      },
    ];
    
    const AppRoutes = () => {
      <FlatRoutes>
        <Route
          path="/docs"
          element={
            <TechDocsCustomHome
              tabsConfig={techDocsTabsConfig}
              filter={{
                kind: ['Location', 'Resource', 'Component'],
                'metadata.annotations.featured-docs': CATALOG_FILTER_EXISTS,
              }}
              CustomPageWrapper={({ children }: React.PropsWithChildren<{}>) => (<PageWithHeader title="Docs" themeId="documentation">{children}</PageWithHeader>)}
            />
          }
        />
      </FlatRoutes>;
    };
    

    Add new Grid option called InfoCardGrid which is a more customizable card option for the Docs grid.

    tsx
    <InfoCardGrid
      entities={entities}
      linkContent="Learn more"
      linkDestination={entity => entity.metadata['external-docs']}
    />
    

    Expose existing CustomDocsPanel so that it can be used independently if desired.

    tsx
    const panels: PanelConfig[] = [
      {
        description: '',
        filterPredicate: entity => {},
        panelType: 'InfoCardGrid',
        title: 'Standards',
        panelProps: {
              CustomHeader: () => <ContentHeader title='Recommended' />
              linkDestination: linkDestination,
            },
      },
      {
        description: '',
        filterPredicate: entity => {},
        panelType: 'DocsCardGrid',
        title: 'Contribute',
      },
    ];
    {
      panels.map((config, index) => (
        <CustomDocsPanel
          key={index}
          config={config}
          entities={!!entities ? entities : []}
          index={index}
        />
      ));
    }
    
  • Updated dependencies

@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

@internal/[email protected]

Patch Changes

@internal/[email protected]

Patch Changes

[email protected]

Patch Changes

@internal/[email protected]

Patch Changes