diff --git a/.changeset/calm-files-hunt.md b/.changeset/calm-files-hunt.md deleted file mode 100644 index c7f1ae5ad5..0000000000 --- a/.changeset/calm-files-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-elasticsearch': patch ---- - -Allow `indexPrefix` configuration through the `app-config.yaml` diff --git a/.changeset/chatty-days-wonder.md b/.changeset/chatty-days-wonder.md new file mode 100644 index 0000000000..5e5114c28e --- /dev/null +++ b/.changeset/chatty-days-wonder.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-bitbucket-provider': patch +--- + +Enabled persistency of scopes for Bitbucket Cloud. diff --git a/.changeset/chilled-bugs-draw.md b/.changeset/chilled-bugs-draw.md deleted file mode 100644 index 2ef96badd1..0000000000 --- a/.changeset/chilled-bugs-draw.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-defaults': patch ---- - -The default auditor service implementation will now log low severity events with `debug` level instead of `info`. diff --git a/.changeset/chilly-sheep-scream.md b/.changeset/chilly-sheep-scream.md new file mode 100644 index 0000000000..eb568ffd8f --- /dev/null +++ b/.changeset/chilly-sheep-scream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Added support of filtering based on system columns in catalog table diff --git a/.changeset/clear-pigs-share.md b/.changeset/clear-pigs-share.md new file mode 100644 index 0000000000..a8241760c8 --- /dev/null +++ b/.changeset/clear-pigs-share.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-catalog-backend-module-github': minor +--- + +**BREAKING**: Explicitly rejects branch names containing a slash character. + +The module now rejects any configuration that contains slashes in branch names. The reason for this is that the ingestion will run into downstream problems if they were let through. If you had configuration with a slash in the branch name in `filters.branch`, your application may fail to start up. + +If you are affected by this, please move over to using branches that do not have slashes in them. diff --git a/.changeset/clever-tomatoes-jump.md b/.changeset/clever-tomatoes-jump.md new file mode 100644 index 0000000000..b18ca53189 --- /dev/null +++ b/.changeset/clever-tomatoes-jump.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-defaults': minor +--- + +Allow pass through of redis client and cluster options to Cache core service diff --git a/.changeset/common-parrots-wink.md b/.changeset/common-parrots-wink.md new file mode 100644 index 0000000000..7e3578771b --- /dev/null +++ b/.changeset/common-parrots-wink.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-react': patch +--- + +Fix catalog entity docs page not loading due to multiple addons data attachment in the New Frontend System. diff --git a/.changeset/cool-moons-lay.md b/.changeset/cool-moons-lay.md deleted file mode 100644 index 98367ff979..0000000000 --- a/.changeset/cool-moons-lay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-react': patch ---- - -Capture the number of search results in the search analytics event that correspond to the term entered. diff --git a/.changeset/crazy-hands-film.md b/.changeset/crazy-hands-film.md new file mode 100644 index 0000000000..1d5933b317 --- /dev/null +++ b/.changeset/crazy-hands-film.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +--- + +Updated the path field in the `gitlab:group:ensureExists` action to support also strings with multiple segments (e.g. `group/subgroup`) diff --git a/.changeset/create-app-1742907012.md b/.changeset/create-app-1742907012.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1742907012.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/create-app-1743513781.md b/.changeset/create-app-1743513781.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1743513781.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/cuddly-dodos-allow.md b/.changeset/cuddly-dodos-allow.md new file mode 100644 index 0000000000..0901d630f1 --- /dev/null +++ b/.changeset/cuddly-dodos-allow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Update AWS file retrieval logic from storing file in buffer array to piping to res for better memory efficiency. diff --git a/.changeset/cuddly-kids-sell.md b/.changeset/cuddly-kids-sell.md new file mode 100644 index 0000000000..3b7cb16841 --- /dev/null +++ b/.changeset/cuddly-kids-sell.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Bump @module-federation/enhanced ^0.9.0 to fix GHSA-593f-38f6-jp5m diff --git a/.changeset/cuddly-mirrors-ask.md b/.changeset/cuddly-mirrors-ask.md new file mode 100644 index 0000000000..4fe611d067 --- /dev/null +++ b/.changeset/cuddly-mirrors-ask.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': patch +--- + +Updated styles for the Menu component in Canon. diff --git a/.changeset/deep-flies-vanish.md b/.changeset/deep-flies-vanish.md new file mode 100644 index 0000000000..30aa10f290 --- /dev/null +++ b/.changeset/deep-flies-vanish.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-unprocessed-entities': patch +--- + +Added confirmation popup for delete entities in Catalog Unprocessed Entities plugin diff --git a/.changeset/dirty-turkeys-remain.md b/.changeset/dirty-turkeys-remain.md deleted file mode 100644 index f9119e3880..0000000000 --- a/.changeset/dirty-turkeys-remain.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes': patch ---- - -refactor: use `KUBERNETES_ANNOTATION` and `KUBERNETES_LABEL_SELECTOR_QUERY_ANNOTATION` annotations from `kubernetes-common` diff --git a/.changeset/dry-cars-build.md b/.changeset/dry-cars-build.md new file mode 100644 index 0000000000..60fd3ece49 --- /dev/null +++ b/.changeset/dry-cars-build.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes': patch +--- + +Added New Frontend System filter for the Kubernetes tab to use `isKubernetesAvailable` to control its visibility diff --git a/.changeset/dull-coats-help.md b/.changeset/dull-coats-help.md deleted file mode 100644 index 60a099da2e..0000000000 --- a/.changeset/dull-coats-help.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-common': patch ---- - -Export `backstage.io/kubernetes-id` and `backstage.io/kubernetes-label-selector` annotations as constants diff --git a/.changeset/early-feet-lay.md b/.changeset/early-feet-lay.md new file mode 100644 index 0000000000..71a557e5e5 --- /dev/null +++ b/.changeset/early-feet-lay.md @@ -0,0 +1,17 @@ +--- +'@backstage/plugin-auth-backend-module-oidc-provider': patch +--- + +Added custom timeout setting for oidc provider + +Here is an example of how to use a custom timeout with the configuration: + +```yaml +auth: + oidc: + production: + clientId: ${AUTH_GOOGLE_CLIENT_ID} + clientSecret: ${AUTH_GOOGLE_CLIENT_SECRET} + timeout: + seconds: 30 +``` diff --git a/.changeset/every-ties-wink.md b/.changeset/every-ties-wink.md new file mode 100644 index 0000000000..31eff3fb9a --- /dev/null +++ b/.changeset/every-ties-wink.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Fixed an issue causing the `repo lint` command to fail when the `--max-warnings` option was used. diff --git a/.changeset/famous-dragons-bake.md b/.changeset/famous-dragons-bake.md new file mode 100644 index 0000000000..17b156de06 --- /dev/null +++ b/.changeset/famous-dragons-bake.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': patch +--- + +add filter for repos by membership and topics diff --git a/.changeset/famous-eggs-dance.md b/.changeset/famous-eggs-dance.md new file mode 100644 index 0000000000..8293746402 --- /dev/null +++ b/.changeset/famous-eggs-dance.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': patch +--- + +Internal refactor and fixes to the prop extraction logic for layout components. diff --git a/.changeset/famous-ladybugs-swim.md b/.changeset/famous-ladybugs-swim.md deleted file mode 100644 index 67341fd906..0000000000 --- a/.changeset/famous-ladybugs-swim.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-pg': patch ---- - -Enable normalization in postgres query to change the behavior of the search. diff --git a/.changeset/friendly-garlics-explain.md b/.changeset/friendly-garlics-explain.md deleted file mode 100644 index 3bf68628b6..0000000000 --- a/.changeset/friendly-garlics-explain.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -'@backstage/plugin-catalog-react': minor ---- - -Add a new `defaultGroup` parameter to the `EntityContentBlueprint`, here are usage examples: - -Set a default group while creating the extension: - -```diff -const entityKubernetesContent = EntityContentBlueprint.make({ - name: 'kubernetes', - params: { - defaultPath: '/kubernetes', - defaultTitle: 'Kubernetes', -+ defaultGroup: 'deployment', - filter: 'kind:component,resource', - loader: () => - import('./KubernetesContentPage').then(m => - compatWrapper(), - ), - }, -}); -``` - -Disassociate an entity content from a default group: - -```diff -# app-config.yaml -app: - extensions: - # Entity page content -- - entity-content:kubernetes/kubernetes -+ - entity-content:kubernetes/kubernetes: -+ config: -+ group: false -``` - -Associate an entity content with a different default or custom group than the one defined in code when the extension was created: - -```diff -# app-config.yaml -app: - extensions: - # Entity page content -- - entity-content:kubernetes/kubernetes -+ - entity-content:kubernetes/kubernetes: -+ config: -+ group: custom # associating this extension with a custom group id, the group should have previously been created via entity page configuration - -``` diff --git a/.changeset/funny-hotels-cut.md b/.changeset/funny-hotels-cut.md new file mode 100644 index 0000000000..7972b68bbb --- /dev/null +++ b/.changeset/funny-hotels-cut.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-sentry': patch +--- + +Made "sentry:project:create" action idempotent diff --git a/.changeset/funny-lizards-clean.md b/.changeset/funny-lizards-clean.md new file mode 100644 index 0000000000..7c85e28188 --- /dev/null +++ b/.changeset/funny-lizards-clean.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Fixed the messaging in the `AlertDisplay` where it was claiming that there were older messages available rather than newer. diff --git a/.changeset/giant-donkeys-punch.md b/.changeset/giant-donkeys-punch.md new file mode 100644 index 0000000000..522055832a --- /dev/null +++ b/.changeset/giant-donkeys-punch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-azure': patch +--- + +Made "publish:azure" action idempotent diff --git a/.changeset/honest-ties-worry.md b/.changeset/honest-ties-worry.md new file mode 100644 index 0000000000..74d8c591c1 --- /dev/null +++ b/.changeset/honest-ties-worry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Scaffolding - Template card - button to show template entity detail diff --git a/.changeset/huge-toys-beam.md b/.changeset/huge-toys-beam.md new file mode 100644 index 0000000000..e36cdcc7f0 --- /dev/null +++ b/.changeset/huge-toys-beam.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-import': patch +--- + +Expose the `UnpackNestedValue` type as it's been removed from `react-hook-form` diff --git a/.changeset/itchy-houses-whisper.md b/.changeset/itchy-houses-whisper.md deleted file mode 100644 index 2b633dbdee..0000000000 --- a/.changeset/itchy-houses-whisper.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-notifications-backend': patch ---- - -Fix null topics being returned from notification API diff --git a/.changeset/itchy-schools-camp.md b/.changeset/itchy-schools-camp.md deleted file mode 100644 index 31b4231a69..0000000000 --- a/.changeset/itchy-schools-camp.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-defaults': patch ---- - -Explicitly stringify extra logger fields with `JSON.stringify` to prevent `[object Object]` errors. diff --git a/.changeset/itchy-times-behave.md b/.changeset/itchy-times-behave.md new file mode 100644 index 0000000000..dc883487b0 --- /dev/null +++ b/.changeset/itchy-times-behave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-bitbucket': patch +--- + +Made "publish:bitbucket" action idempotent diff --git a/.changeset/large-kings-protect.md b/.changeset/large-kings-protect.md new file mode 100644 index 0000000000..363e2b7759 --- /dev/null +++ b/.changeset/large-kings-protect.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Added `validateLocationsExist` to the config definition where it was missing. diff --git a/.changeset/lemon-shoes-enter.md b/.changeset/lemon-shoes-enter.md new file mode 100644 index 0000000000..a950989d93 --- /dev/null +++ b/.changeset/lemon-shoes-enter.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': patch +--- + +Add global CSS reset for anchor tags. diff --git a/.changeset/light-cameras-fold.md b/.changeset/light-cameras-fold.md new file mode 100644 index 0000000000..8ec49c5d02 --- /dev/null +++ b/.changeset/light-cameras-fold.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-notifications-backend-module-slack': minor +--- + +Added a new Slack NotificationProcessor for use with the notifications plugin diff --git a/.changeset/metal-animals-notice.md b/.changeset/metal-animals-notice.md new file mode 100644 index 0000000000..c1a844ddb0 --- /dev/null +++ b/.changeset/metal-animals-notice.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': patch +--- + +Made "github:autolinks:create" action idempotent diff --git a/.changeset/moody-eagles-smile.md b/.changeset/moody-eagles-smile.md new file mode 100644 index 0000000000..3fd8a748ab --- /dev/null +++ b/.changeset/moody-eagles-smile.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-import': patch +--- + +adding translation for `Register an existing component` text diff --git a/.changeset/nasty-lemons-scream.md b/.changeset/nasty-lemons-scream.md deleted file mode 100644 index 2b0254b382..0000000000 --- a/.changeset/nasty-lemons-scream.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-events-backend': patch ---- - -Allow webhook content to be 5mb instead the default 100kb diff --git a/.changeset/nine-falcons-repeat.md b/.changeset/nine-falcons-repeat.md new file mode 100644 index 0000000000..a67e925343 --- /dev/null +++ b/.changeset/nine-falcons-repeat.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-bitbucket-server': minor +'@backstage/plugin-events-backend-module-bitbucket-server': minor +--- + +Added the ability for the plugin to receive events coming from Bitbucket Server push webhooks. It then performs a delta mutation on the catalog. diff --git a/.changeset/ninety-teachers-tease.md b/.changeset/ninety-teachers-tease.md deleted file mode 100644 index 78a890c3d5..0000000000 --- a/.changeset/ninety-teachers-tease.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -'@backstage/plugin-catalog-react': minor ---- - -Introduces a new `EntityContentLayoutBlueprint` that creates custom entity content layouts. - -The layout components receive card elements and can render them as they see fit. Cards is an array of objects with the following properties: - -- element: `JSx.Element`; -- type: `"peek" | "info" | "full" | undefined`; - -### Usage example - -Creating a custom overview tab layout: - -```tsx -import { - EntityContentLayoutProps, - EntityContentLayoutBlueprint, -} from '@backstage/plugin-catalog-react/alpha'; -// ... - -function StickyEntityContentOverviewLayout(props: EntityContentLayoutProps) { - const { cards } = props; - const classes = useStyles(); - return ( - - - - {cards - .filter(card => card.type === 'info') - .map((card, index) => ( - - {card.element} - - ))} - - - - - {cards - .filter(card => card.type === 'peek') - .map((card, index) => ( - - {card.element} - - ))} - {cards - .filter(card => !card.type || card.type === 'full') - .map((card, index) => ( - - {card.element} - - ))} - - - - ); -} - -export const customEntityContentOverviewStickyLayoutModule = createFrontendModule({ - pluginId: 'app', - extensions: [ - EntityContentLayoutBlueprint.make({ - name: 'sticky', - params: { - // (optional) defaults the `() => false` filter function - defaultFilter: 'kind:template' - loader: async () => StickyEntityContentOverviewLayout, - }, - }), - ], -``` - -Disabling the custom layout: - -```yaml -# app-config.yaml -app: - extensions: - - entity-content-layout:app/sticky: false -``` - -Overriding the custom layout filter: - -```yaml -# app-config.yaml -app: - extensions: - - entity-content-layout:app/sticky: - config: - # This layout will be used only with component entities - filter: 'kind:component' -``` diff --git a/.changeset/odd-bobcats-hang.md b/.changeset/odd-bobcats-hang.md new file mode 100644 index 0000000000..9b3aeccffc --- /dev/null +++ b/.changeset/odd-bobcats-hang.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder-node': patch +--- + +Document the internal built-in filters, and ensure that the types are validated when using `createTemplateFilter` and `createTemplateGlobalFunction` from the `zod` schema. diff --git a/.changeset/olive-planes-pay.md b/.changeset/olive-planes-pay.md deleted file mode 100644 index 1997ce1c71..0000000000 --- a/.changeset/olive-planes-pay.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-catalog-react': minor ---- - -Added `hidden` prop to `EntityTagPicker`, `EntityAutocompletePicker` and `UserListPicker`. -Added `initialFilter` prop to `EntityTagPicker` to set an initial filter for the picker. -Added `alwaysKeepFilters` prop to `UserListPicker` to prevent filters from resetting when no entities match the initial filters. diff --git a/.changeset/orange-queens-grin.md b/.changeset/orange-queens-grin.md new file mode 100644 index 0000000000..66955655d7 --- /dev/null +++ b/.changeset/orange-queens-grin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +add template-extensions scaffolder service endpoint diff --git a/.changeset/pre.json b/.changeset/pre.json index 23c72bf7f9..b443ec4505 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -2,311 +2,253 @@ "mode": "pre", "tag": "next", "initialVersions": { - "example-app": "0.2.105", - "@backstage/app-defaults": "1.5.16", - "example-app-next": "0.0.19", - "app-next-example-plugin": "0.0.19", - "example-backend": "0.0.34", - "@backstage/backend-app-api": "1.1.1", - "@backstage/backend-defaults": "0.7.0", + "example-app": "0.2.107", + "@backstage/app-defaults": "1.6.0", + "example-app-next": "0.0.21", + "app-next-example-plugin": "0.0.21", + "example-backend": "0.0.36", + "@backstage/backend-app-api": "1.2.1", + "@backstage/backend-defaults": "0.8.2", "@backstage/backend-dev-utils": "0.1.5", - "@backstage/backend-dynamic-feature-service": "0.5.3", - "example-backend-legacy": "0.2.106", - "@backstage/backend-openapi-utils": "0.4.1", - "@backstage/backend-plugin-api": "1.1.1", - "@backstage/backend-test-utils": "1.2.1", - "@backstage/canon": "0.0.0", + "@backstage/backend-dynamic-feature-service": "0.6.1", + "example-backend-legacy": "0.2.108", + "@backstage/backend-openapi-utils": "0.5.1", + "@backstage/backend-plugin-api": "1.2.1", + "@backstage/backend-test-utils": "1.3.1", + "@backstage/canon": "0.2.0", "@backstage/catalog-client": "1.9.1", "@backstage/catalog-model": "1.7.3", - "@backstage/cli": "0.29.5", + "@backstage/cli": "0.31.0", "@backstage/cli-common": "0.1.15", - "@backstage/cli-node": "0.2.12", + "@backstage/cli-node": "0.2.13", "@backstage/codemods": "0.1.52", "@backstage/config": "1.3.2", - "@backstage/config-loader": "1.9.5", - "@backstage/core-app-api": "1.15.4", - "@backstage/core-compat-api": "0.3.5", - "@backstage/core-components": "0.16.3", - "@backstage/core-plugin-api": "1.10.3", - "@backstage/create-app": "0.5.24", - "@backstage/dev-utils": "1.1.6", - "e2e-test": "0.2.24", + "@backstage/config-loader": "1.10.0", + "@backstage/core-app-api": "1.16.0", + "@backstage/core-compat-api": "0.4.0", + "@backstage/core-components": "0.17.0", + "@backstage/core-plugin-api": "1.10.5", + "@backstage/create-app": "0.6.0", + "@backstage/dev-utils": "1.1.8", + "e2e-test": "0.2.26", "@backstage/e2e-test-utils": "0.1.1", "@backstage/errors": "1.2.7", "@backstage/eslint-plugin": "0.1.10", - "@backstage/frontend-app-api": "0.10.4", - "@backstage/frontend-defaults": "0.1.5", - "@internal/frontend": "0.0.5", - "@backstage/frontend-plugin-api": "0.9.4", - "@backstage/frontend-test-utils": "0.2.5", - "@backstage/integration": "1.16.1", + "@backstage/frontend-app-api": "0.11.0", + "@backstage/frontend-defaults": "0.2.0", + "@internal/frontend": "0.0.7", + "@backstage/frontend-plugin-api": "0.10.0", + "@backstage/frontend-test-utils": "0.3.0", + "@backstage/integration": "1.16.2", "@backstage/integration-aws-node": "0.1.15", - "@backstage/integration-react": "1.2.3", + "@backstage/integration-react": "1.2.5", "@internal/opaque": "0.0.1", "@backstage/release-manifests": "0.0.12", - "@backstage/repo-tools": "0.12.1", - "@internal/scaffolder": "0.0.5", - "@techdocs/cli": "1.8.25", - "techdocs-cli-embedded-app": "0.2.104", - "@backstage/test-utils": "1.7.4", - "@backstage/theme": "0.6.3", + "@backstage/repo-tools": "0.13.1", + "@internal/scaffolder": "0.0.7", + "@techdocs/cli": "1.9.1", + "techdocs-cli-embedded-app": "0.2.106", + "@backstage/test-utils": "1.7.6", + "@backstage/theme": "0.6.4", "@backstage/types": "1.2.1", - "@backstage/version-bridge": "1.0.10", + "@backstage/version-bridge": "1.0.11", "yarn-plugin-backstage": "0.0.4", - "@backstage/plugin-api-docs": "0.12.3", - "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.8", - "@backstage/plugin-app": "0.1.5", - "@backstage/plugin-app-backend": "0.4.4", - "@backstage/plugin-app-node": "0.1.29", - "@backstage/plugin-app-visualizer": "0.1.15", - "@backstage/plugin-auth-backend": "0.24.2", - "@backstage/plugin-auth-backend-module-atlassian-provider": "0.3.4", - "@backstage/plugin-auth-backend-module-auth0-provider": "0.1.4", - "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.3.2", - "@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-bitbucket-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-bitbucket-server-provider": "0.1.4", - "@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.3.4", - "@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.3.4", - "@backstage/plugin-auth-backend-module-github-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-gitlab-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-google-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-guest-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-microsoft-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-oauth2-provider": "0.3.4", - "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-oidc-provider": "0.3.4", - "@backstage/plugin-auth-backend-module-okta-provider": "0.1.4", - "@backstage/plugin-auth-backend-module-onelogin-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-pinniped-provider": "0.2.4", - "@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.4.3", - "@backstage/plugin-auth-node": "0.5.6", - "@backstage/plugin-auth-react": "0.1.11", - "@backstage/plugin-bitbucket-cloud-common": "0.2.27", - "@backstage/plugin-catalog": "1.26.1", - "@backstage/plugin-catalog-backend": "1.30.0", - "@backstage/plugin-catalog-backend-module-aws": "0.4.7", - "@backstage/plugin-catalog-backend-module-azure": "0.3.1", - "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.4.4", - "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.4.4", - "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.3.1", - "@backstage/plugin-catalog-backend-module-gcp": "0.3.4", - "@backstage/plugin-catalog-backend-module-gerrit": "0.2.6", - "@backstage/plugin-catalog-backend-module-github": "0.7.9", - "@backstage/plugin-catalog-backend-module-github-org": "0.3.6", - "@backstage/plugin-catalog-backend-module-gitlab": "0.6.2", - "@backstage/plugin-catalog-backend-module-gitlab-org": "0.2.5", - "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.6.2", - "@backstage/plugin-catalog-backend-module-ldap": "0.11.1", - "@backstage/plugin-catalog-backend-module-logs": "0.1.6", - "@backstage/plugin-catalog-backend-module-msgraph": "0.6.6", - "@backstage/plugin-catalog-backend-module-openapi": "0.2.6", - "@backstage/plugin-catalog-backend-module-puppetdb": "0.2.6", - "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.2.4", - "@backstage/plugin-catalog-backend-module-unprocessed": "0.5.4", + "@backstage/plugin-api-docs": "0.12.5", + "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.9", + "@backstage/plugin-app": "0.1.7", + "@backstage/plugin-app-backend": "0.5.0", + "@backstage/plugin-app-node": "0.1.31", + "@backstage/plugin-app-visualizer": "0.1.17", + "@backstage/plugin-auth-backend": "0.24.4", + "@backstage/plugin-auth-backend-module-atlassian-provider": "0.4.1", + "@backstage/plugin-auth-backend-module-auth0-provider": "0.2.1", + "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.4.1", + "@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.2.6", + "@backstage/plugin-auth-backend-module-bitbucket-provider": "0.3.1", + "@backstage/plugin-auth-backend-module-bitbucket-server-provider": "0.2.1", + "@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.4.1", + "@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.4.1", + "@backstage/plugin-auth-backend-module-github-provider": "0.3.1", + "@backstage/plugin-auth-backend-module-gitlab-provider": "0.3.1", + "@backstage/plugin-auth-backend-module-google-provider": "0.3.1", + "@backstage/plugin-auth-backend-module-guest-provider": "0.2.6", + "@backstage/plugin-auth-backend-module-microsoft-provider": "0.3.1", + "@backstage/plugin-auth-backend-module-oauth2-provider": "0.4.1", + "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.2.6", + "@backstage/plugin-auth-backend-module-oidc-provider": "0.4.1", + "@backstage/plugin-auth-backend-module-okta-provider": "0.2.1", + "@backstage/plugin-auth-backend-module-onelogin-provider": "0.3.1", + "@backstage/plugin-auth-backend-module-pinniped-provider": "0.3.1", + "@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.5.1", + "@backstage/plugin-auth-node": "0.6.1", + "@backstage/plugin-auth-react": "0.1.13", + "@backstage/plugin-bitbucket-cloud-common": "0.2.28", + "@backstage/plugin-catalog": "1.28.0", + "@backstage/plugin-catalog-backend": "1.32.0", + "@backstage/plugin-catalog-backend-module-aws": "0.4.9", + "@backstage/plugin-catalog-backend-module-azure": "0.3.3", + "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.5.0", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.4.6", + "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.3.3", + "@backstage/plugin-catalog-backend-module-gcp": "0.3.6", + "@backstage/plugin-catalog-backend-module-gerrit": "0.3.0", + "@backstage/plugin-catalog-backend-module-github": "0.7.11", + "@backstage/plugin-catalog-backend-module-github-org": "0.3.8", + "@backstage/plugin-catalog-backend-module-gitlab": "0.6.4", + "@backstage/plugin-catalog-backend-module-gitlab-org": "0.2.7", + "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.6.4", + "@backstage/plugin-catalog-backend-module-ldap": "0.11.3", + "@backstage/plugin-catalog-backend-module-logs": "0.1.8", + "@backstage/plugin-catalog-backend-module-msgraph": "0.6.8", + "@backstage/plugin-catalog-backend-module-openapi": "0.2.8", + "@backstage/plugin-catalog-backend-module-puppetdb": "0.2.8", + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.2.6", + "@backstage/plugin-catalog-backend-module-unprocessed": "0.5.6", "@backstage/plugin-catalog-common": "1.1.3", - "@backstage/plugin-catalog-graph": "0.4.15", - "@backstage/plugin-catalog-import": "0.12.9", - "@backstage/plugin-catalog-node": "1.15.1", - "@backstage/plugin-catalog-react": "1.15.1", - "@backstage/plugin-catalog-unprocessed-entities": "0.2.13", + "@backstage/plugin-catalog-graph": "0.4.17", + "@backstage/plugin-catalog-import": "0.12.11", + "@backstage/plugin-catalog-node": "1.16.1", + "@backstage/plugin-catalog-react": "1.16.0", + "@backstage/plugin-catalog-unprocessed-entities": "0.2.15", "@backstage/plugin-catalog-unprocessed-entities-common": "0.0.7", - "@backstage/plugin-config-schema": "0.1.64", - "@backstage/plugin-devtools": "0.1.23", - "@backstage/plugin-devtools-backend": "0.5.1", + "@backstage/plugin-config-schema": "0.1.66", + "@backstage/plugin-devtools": "0.1.25", + "@backstage/plugin-devtools-backend": "0.5.3", "@backstage/plugin-devtools-common": "0.1.15", - "@backstage/plugin-events-backend": "0.4.1", - "@backstage/plugin-events-backend-module-aws-sqs": "0.4.7", - "@backstage/plugin-events-backend-module-azure": "0.2.16", - "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.16", - "@backstage/plugin-events-backend-module-gerrit": "0.2.16", - "@backstage/plugin-events-backend-module-github": "0.2.16", - "@backstage/plugin-events-backend-module-gitlab": "0.2.16", - "@backstage/plugin-events-backend-test-utils": "0.1.40", - "@backstage/plugin-events-node": "0.4.7", - "@internal/plugin-todo-list": "1.0.35", - "@internal/plugin-todo-list-backend": "1.0.35", + "@backstage/plugin-events-backend": "0.5.0", + "@backstage/plugin-events-backend-module-aws-sqs": "0.4.9", + "@backstage/plugin-events-backend-module-azure": "0.2.18", + "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.18", + "@backstage/plugin-events-backend-module-gerrit": "0.2.18", + "@backstage/plugin-events-backend-module-github": "0.2.18", + "@backstage/plugin-events-backend-module-gitlab": "0.2.18", + "@backstage/plugin-events-backend-test-utils": "0.1.42", + "@backstage/plugin-events-node": "0.4.9", + "@internal/plugin-todo-list": "1.0.37", + "@internal/plugin-todo-list-backend": "1.0.37", "@internal/plugin-todo-list-common": "1.0.24", - "@backstage/plugin-home": "0.8.4", - "@backstage/plugin-home-react": "0.1.22", - "@backstage/plugin-kubernetes": "0.12.3", - "@backstage/plugin-kubernetes-backend": "0.19.2", - "@backstage/plugin-kubernetes-cluster": "0.0.21", - "@backstage/plugin-kubernetes-common": "0.9.2", - "@backstage/plugin-kubernetes-node": "0.2.2", - "@backstage/plugin-kubernetes-react": "0.5.3", - "@backstage/plugin-notifications": "0.5.1", - "@backstage/plugin-notifications-backend": "0.5.1", - "@backstage/plugin-notifications-backend-module-email": "0.3.5", + "@backstage/plugin-home": "0.8.6", + "@backstage/plugin-home-react": "0.1.24", + "@backstage/plugin-kubernetes": "0.12.5", + "@backstage/plugin-kubernetes-backend": "0.19.4", + "@backstage/plugin-kubernetes-cluster": "0.0.23", + "@backstage/plugin-kubernetes-common": "0.9.4", + "@backstage/plugin-kubernetes-node": "0.2.4", + "@backstage/plugin-kubernetes-react": "0.5.5", + "@backstage/plugin-notifications": "0.5.3", + "@backstage/plugin-notifications-backend": "0.5.4", + "@backstage/plugin-notifications-backend-module-email": "0.3.7", "@backstage/plugin-notifications-common": "0.0.8", - "@backstage/plugin-notifications-node": "0.2.11", - "@backstage/plugin-org": "0.6.35", - "@backstage/plugin-org-react": "0.1.34", - "@backstage/plugin-permission-backend": "0.5.53", - "@backstage/plugin-permission-backend-module-allow-all-policy": "0.2.4", + "@backstage/plugin-notifications-node": "0.2.13", + "@backstage/plugin-org": "0.6.37", + "@backstage/plugin-org-react": "0.1.36", + "@backstage/plugin-permission-backend": "0.5.55", + "@backstage/plugin-permission-backend-module-allow-all-policy": "0.2.6", "@backstage/plugin-permission-common": "0.8.4", - "@backstage/plugin-permission-node": "0.8.7", - "@backstage/plugin-permission-react": "0.4.30", - "@backstage/plugin-proxy-backend": "0.5.10", - "@backstage/plugin-proxy-node": "0.1.0", - "@backstage/plugin-scaffolder": "1.27.4", - "@backstage/plugin-scaffolder-backend": "1.29.0", - "@backstage/plugin-scaffolder-backend-module-azure": "0.2.5", - "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.3.6", - "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.2.5", - "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.2.5", - "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.3.5", - "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.3.6", - "@backstage/plugin-scaffolder-backend-module-gcp": "0.2.5", - "@backstage/plugin-scaffolder-backend-module-gerrit": "0.2.5", - "@backstage/plugin-scaffolder-backend-module-gitea": "0.2.5", - "@backstage/plugin-scaffolder-backend-module-github": "0.5.5", - "@backstage/plugin-scaffolder-backend-module-gitlab": "0.7.1", - "@backstage/plugin-scaffolder-backend-module-notifications": "0.1.6", - "@backstage/plugin-scaffolder-backend-module-rails": "0.5.5", - "@backstage/plugin-scaffolder-backend-module-sentry": "0.2.5", - "@backstage/plugin-scaffolder-backend-module-yeoman": "0.4.6", - "@backstage/plugin-scaffolder-common": "1.5.9", - "@backstage/plugin-scaffolder-node": "0.6.3", - "@backstage/plugin-scaffolder-node-test-utils": "0.1.18", - "@backstage/plugin-scaffolder-react": "1.14.3", - "@backstage/plugin-search": "1.4.22", - "@backstage/plugin-search-backend": "1.8.1", - "@backstage/plugin-search-backend-module-catalog": "0.3.0", - "@backstage/plugin-search-backend-module-elasticsearch": "1.6.4", - "@backstage/plugin-search-backend-module-explore": "0.2.7", - "@backstage/plugin-search-backend-module-pg": "0.5.40", - "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.3.5", - "@backstage/plugin-search-backend-module-techdocs": "0.3.5", - "@backstage/plugin-search-backend-node": "1.3.7", + "@backstage/plugin-permission-node": "0.9.0", + "@backstage/plugin-permission-react": "0.4.32", + "@backstage/plugin-proxy-backend": "0.6.0", + "@backstage/plugin-proxy-node": "0.1.2", + "@backstage/plugin-scaffolder": "1.29.0", + "@backstage/plugin-scaffolder-backend": "1.31.0", + "@backstage/plugin-scaffolder-backend-module-azure": "0.2.7", + "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.3.8", + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.2.7", + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.2.7", + "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.3.7", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.3.8", + "@backstage/plugin-scaffolder-backend-module-gcp": "0.2.7", + "@backstage/plugin-scaffolder-backend-module-gerrit": "0.2.7", + "@backstage/plugin-scaffolder-backend-module-gitea": "0.2.7", + "@backstage/plugin-scaffolder-backend-module-github": "0.6.1", + "@backstage/plugin-scaffolder-backend-module-gitlab": "0.8.1", + "@backstage/plugin-scaffolder-backend-module-notifications": "0.1.8", + "@backstage/plugin-scaffolder-backend-module-rails": "0.5.7", + "@backstage/plugin-scaffolder-backend-module-sentry": "0.2.7", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.4.8", + "@backstage/plugin-scaffolder-common": "1.5.10", + "@backstage/plugin-scaffolder-node": "0.8.0", + "@backstage/plugin-scaffolder-node-test-utils": "0.2.0", + "@backstage/plugin-scaffolder-react": "1.14.6", + "@backstage/plugin-search": "1.4.24", + "@backstage/plugin-search-backend": "2.0.0", + "@backstage/plugin-search-backend-module-catalog": "0.3.2", + "@backstage/plugin-search-backend-module-elasticsearch": "1.7.0", + "@backstage/plugin-search-backend-module-explore": "0.3.0", + "@backstage/plugin-search-backend-module-pg": "0.5.42", + "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.3.7", + "@backstage/plugin-search-backend-module-techdocs": "0.4.0", + "@backstage/plugin-search-backend-node": "1.3.9", "@backstage/plugin-search-common": "1.2.17", - "@backstage/plugin-search-react": "1.8.5", - "@backstage/plugin-signals": "0.0.15", - "@backstage/plugin-signals-backend": "0.3.0", - "@backstage/plugin-signals-node": "0.1.16", - "@backstage/plugin-signals-react": "0.0.9", - "@backstage/plugin-techdocs": "1.12.1", - "@backstage/plugin-techdocs-addons-test-utils": "1.0.44", - "@backstage/plugin-techdocs-backend": "1.11.5", + "@backstage/plugin-search-react": "1.8.7", + "@backstage/plugin-signals": "0.0.17", + "@backstage/plugin-signals-backend": "0.3.2", + "@backstage/plugin-signals-node": "0.1.18", + "@backstage/plugin-signals-react": "0.0.11", + "@backstage/plugin-techdocs": "1.12.4", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.46", + "@backstage/plugin-techdocs-backend": "2.0.0", "@backstage/plugin-techdocs-common": "0.1.0", - "@backstage/plugin-techdocs-module-addons-contrib": "1.1.20", - "@backstage/plugin-techdocs-node": "1.12.16", - "@backstage/plugin-techdocs-react": "1.2.13", - "@backstage/plugin-user-settings": "0.8.18", - "@backstage/plugin-user-settings-backend": "0.2.29", - "@backstage/plugin-user-settings-common": "0.0.1" + "@backstage/plugin-techdocs-module-addons-contrib": "1.1.22", + "@backstage/plugin-techdocs-node": "1.13.1", + "@backstage/plugin-techdocs-react": "1.2.15", + "@backstage/plugin-user-settings": "0.8.20", + "@backstage/plugin-user-settings-backend": "0.3.0", + "@backstage/plugin-user-settings-common": "0.0.1", + "@backstage/plugin-events-backend-module-bitbucket-server": "0.0.0", + "@backstage/plugin-notifications-backend-module-slack": "0.0.0" }, "changesets": [ - "afraid-experts-explain", - "afraid-kids-jog", - "beige-dingos-destroy", - "bigint-convert", - "bright-carrots-care", - "bright-mugs-remember", - "brown-cycles-beg", - "clean-squids-build", - "cli-melancholy-in-advance", - "cool-pants-boil", - "create-app-1737468383", - "create-app-1738069526", - "create-app-1738672510", - "curly-humans-prove", - "curvy-ways-play", - "cyan-grapes-confess", - "dependabot-f80f563", - "dry-flies-rhyme", - "dry-horses-report", - "early-peaches-allow", - "eight-cougars-collect-due", - "eight-cougars-collect", - "eleven-goats-yell", - "eleven-mice-sleep", - "fair-mangos-sleep", - "fair-rocks-dream", - "fast-rabbits-unite", - "few-ducks-cross", - "few-shrimps-kiss", - "fifty-humans-repair", - "fifty-pandas-destroy", - "fifty-trains-attend", - "fifty-turtles-count", - "fluffy-carrots-wink", - "fresh-bears-thank", - "gentle-actors-sleep", - "gold-cameras-battle", - "gold-rabbits-change", - "gorgeous-shoes-stare", - "green-jokes-provide", - "grumpy-crews-sneeze", - "happy-windows-shop", - "heavy-bobcats-search", - "heavy-olives-thank", - "hip-hotels-type", - "hot-mice-cry", - "hot-planes-hear", - "hungry-chefs-relax", - "hungry-cycles-hide", - "hungry-mirrors-sniff", - "hungry-rings-live", - "large-pans-brake", - "late-cycles-teach", - "little-mangos-reply", - "loud-baboons-relate", - "loud-walls-build", - "lucky-seas-live", - "many-goats-flash", - "metal-worms-live", - "neat-singers-rhyme", - "nine-ears-destroy", - "odd-countries-vanish", - "old-moons-end", - "old-phones-rest", - "olive-boxes-hide-backend-defaults", - "olive-boxes-hide-backend-plugin-api", - "olive-boxes-hide-backend-test-utils", - "olive-boxes-hide-catalog-backend", - "olive-boxes-hide-scaffolder-backend", - "olive-boxes-hide-scaffolder-node", - "orange-brooms-lick", - "plenty-bobcats-drum", - "polite-apricots-exercise", - "polite-pumas-joke", - "pretty-apricots-poke", - "pretty-worms-walk", - "proud-dolls-behave", - "proud-dryers-act", - "proud-hornets-cheer", - "purple-years-cross", - "quiet-phones-sell", - "real-foxes-film", - "selfish-dodos-hear", - "serious-ads-leave", - "sharp-vans-protect", - "sharp-years-drive", - "short-keys-heal", - "short-vans-reflect", - "silly-vans-shop", - "slow-bananas-beam", - "smart-ligers-sniff", - "soft-planets-mate", - "soft-seahorses-relate", - "tall-scissors-sip", - "tame-hats-shout", - "thirty-dancers-cheat", - "three-glasses-sell", - "tidy-forks-pay", - "tidy-oranges-allow", - "tiny-spoons-repeat", - "twelve-eyes-stare", - "two-schools-deny", - "warm-masks-ring", - "wet-bees-heal", - "wise-apes-juggle", - "wise-cycles-sparkle", - "witty-clocks-thank", - "witty-ducks-cross", - "witty-pets-march", - "yellow-rules-vanish", - "young-plants-report" + "chatty-days-wonder", + "chilly-sheep-scream", + "clear-pigs-share", + "clever-tomatoes-jump", + "common-parrots-wink", + "crazy-hands-film", + "create-app-1742907012", + "create-app-1743513781", + "cuddly-dodos-allow", + "cuddly-kids-sell", + "cuddly-mirrors-ask", + "deep-flies-vanish", + "dry-cars-build", + "early-feet-lay", + "every-ties-wink", + "famous-dragons-bake", + "famous-eggs-dance", + "funny-hotels-cut", + "funny-lizards-clean", + "giant-donkeys-punch", + "honest-ties-worry", + "huge-toys-beam", + "itchy-times-behave", + "large-kings-protect", + "lemon-shoes-enter", + "light-cameras-fold", + "metal-animals-notice", + "moody-eagles-smile", + "nine-falcons-repeat", + "odd-bobcats-hang", + "orange-queens-grin", + "quick-carrots-open", + "rotten-bobcats-notice", + "sad-pots-try", + "serious-guests-tan", + "silver-rocks-invite", + "spotty-towns-show", + "stale-tables-stick", + "strange-planes-kneel", + "sweet-maps-invent", + "swift-boats-add", + "tame-sloths-brake", + "tame-worms-do", + "thin-snails-judge", + "tiny-swans-warn", + "twenty-forks-cheat", + "twenty-walls-join", + "unlucky-carrots-shave", + "wet-penguins-beg", + "wide-planets-camp", + "witty-planets-sing" ] } diff --git a/.changeset/quick-carrots-open.md b/.changeset/quick-carrots-open.md new file mode 100644 index 0000000000..7cde586e64 --- /dev/null +++ b/.changeset/quick-carrots-open.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': patch +--- + +Fix types on the Icon component. diff --git a/.changeset/real-hounds-mate.md b/.changeset/real-hounds-mate.md deleted file mode 100644 index 31d98601df..0000000000 --- a/.changeset/real-hounds-mate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog': minor ---- - -The `Overview` entity content now supports custom cards grid layouts. diff --git a/.changeset/rotten-bobcats-notice.md b/.changeset/rotten-bobcats-notice.md new file mode 100644 index 0000000000..0f6d1c74f9 --- /dev/null +++ b/.changeset/rotten-bobcats-notice.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-notifications-backend': patch +--- + +Allow throttling notification sending not to block the system with huge amount of receiving users diff --git a/.changeset/sad-pots-try.md b/.changeset/sad-pots-try.md new file mode 100644 index 0000000000..68c442fc6e --- /dev/null +++ b/.changeset/sad-pots-try.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Add `operation` to alpha `defaultEntityContentGroups`. diff --git a/.changeset/selfish-cheetahs-sip.md b/.changeset/selfish-cheetahs-sip.md deleted file mode 100644 index 8ebd6b50b3..0000000000 --- a/.changeset/selfish-cheetahs-sip.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -'@backstage/plugin-catalog-react': minor ---- - -Add an optional `type` parameter to `EntityCard` extensions. A card's type determines characteristics such as its expected size and where it will be rendered by the entity content layout. - -Initially the following three types are supported: - -- `peek`: small vertical cards that provide information at a glance, for example recent builds, deployments, and service health. -- `info`: medium size cards with high priority and frequently used information such as common actions, entity metadata, and links. -- `full`: Large cards that are more feature rich with more information, typically used by plugins that don't quite need the full content view and want to show a card instead. - -### Usage examples - -Defining a default type when creating a card: - -```diff -const myCard = EntityCardBlueprint.make({ - name: 'myCard', - params: { -+ type: 'info', - loader: import('./MyCard).then(m => { default: m.MyCard }), - }, -}); -``` - -Changing the card type via `app-config.yaml` file: - -```diff -app: - extensions: -+ - entity-card:myPlugin/myCard: -+ config: -+ type: info -``` diff --git a/.changeset/serious-guests-tan.md b/.changeset/serious-guests-tan.md new file mode 100644 index 0000000000..c051dca464 --- /dev/null +++ b/.changeset/serious-guests-tan.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration-react': patch +--- + +Added scope `project` for Bitbucket Cloud. diff --git a/.changeset/shy-geckos-leave.md b/.changeset/shy-geckos-leave.md deleted file mode 100644 index 2824962bef..0000000000 --- a/.changeset/shy-geckos-leave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Excludes svg styling from sanitization diff --git a/.changeset/silver-rocks-invite.md b/.changeset/silver-rocks-invite.md new file mode 100644 index 0000000000..3a08bc72af --- /dev/null +++ b/.changeset/silver-rocks-invite.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch +--- + +Made "publish:bitbucketCloud" action idempotent diff --git a/.changeset/spotty-towns-show.md b/.changeset/spotty-towns-show.md new file mode 100644 index 0000000000..8ec69f3f5e --- /dev/null +++ b/.changeset/spotty-towns-show.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': patch +--- + +Made "github:branch-protection:create" action idempotent diff --git a/.changeset/stale-chairs-look.md b/.changeset/stale-chairs-look.md new file mode 100644 index 0000000000..75a277901a --- /dev/null +++ b/.changeset/stale-chairs-look.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Update Azure file retrieval logic from storing file in buffer array to piping to res for better memory efficiency. diff --git a/.changeset/stale-tables-stick.md b/.changeset/stale-tables-stick.md new file mode 100644 index 0000000000..bea1c3361b --- /dev/null +++ b/.changeset/stale-tables-stick.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Mark GitHub `webhookSecret` config property as optional. A `webhookSecret` is not required when creating a GitHub App. diff --git a/.changeset/strange-masks-type.md b/.changeset/strange-masks-type.md deleted file mode 100644 index 6b4edf9c5e..0000000000 --- a/.changeset/strange-masks-type.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch -'@backstage/plugin-techdocs-react': patch -'@backstage/plugin-techdocs-module-addons-contrib': patch ---- - -Added `TechDocsAddonsBlueprint` extension to allow adding of techdocs addons. diff --git a/.changeset/strange-planes-kneel.md b/.changeset/strange-planes-kneel.md new file mode 100644 index 0000000000..8e57057aee --- /dev/null +++ b/.changeset/strange-planes-kneel.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-react': minor +'@backstage/plugin-scaffolder': minor +--- + +add api to retrieve template extensions info from scaffolder-backend diff --git a/.changeset/sweet-maps-invent.md b/.changeset/sweet-maps-invent.md new file mode 100644 index 0000000000..390ce57dc7 --- /dev/null +++ b/.changeset/sweet-maps-invent.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-unprocessed-entities': patch +--- + +Fixed the `convertTimeToLocalTimezone` function in the FailedEntities component to correctly parse ISO 8601 date strings and set the timezone to the current local timezone. diff --git a/.changeset/swift-boats-add.md b/.changeset/swift-boats-add.md new file mode 100644 index 0000000000..42682437b0 --- /dev/null +++ b/.changeset/swift-boats-add.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': patch +--- + +Made "publish:github" action idempotent diff --git a/.changeset/tall-falcons-juggle.md b/.changeset/tall-falcons-juggle.md deleted file mode 100644 index 6843d48146..0000000000 --- a/.changeset/tall-falcons-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/frontend-plugin-api': patch ---- - -Added a new `ExtensionBoundary.lazyComponent` helper in addition to the existing `ExtensionBoundary.lazy` helper. diff --git a/.changeset/tame-sloths-brake.md b/.changeset/tame-sloths-brake.md new file mode 100644 index 0000000000..eae1321175 --- /dev/null +++ b/.changeset/tame-sloths-brake.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-notifications': patch +--- + +Made "notification:send" action idempotent diff --git a/.changeset/tame-worms-do.md b/.changeset/tame-worms-do.md new file mode 100644 index 0000000000..21872b9106 --- /dev/null +++ b/.changeset/tame-worms-do.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch +--- + +Fixed bug in event-based discovery that caused unnecessary API calls to Bitbucket Cloud diff --git a/.changeset/techdocs-four-needles-switch.md b/.changeset/techdocs-four-needles-switch.md deleted file mode 100644 index b5b622c6c6..0000000000 --- a/.changeset/techdocs-four-needles-switch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Adds the page name of techdoc to the document's title. diff --git a/.changeset/techdocs-late-ants-remain.md b/.changeset/techdocs-late-ants-remain.md deleted file mode 100644 index cb1d34b461..0000000000 --- a/.changeset/techdocs-late-ants-remain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Updates logic to check for SVG sources when inlining svgs. diff --git a/.changeset/techdocs-slow-zebras-camp.md b/.changeset/techdocs-slow-zebras-camp.md deleted file mode 100644 index 267e874284..0000000000 --- a/.changeset/techdocs-slow-zebras-camp.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-node': patch ---- - -Bumps the version of the techdocs generator container used. diff --git a/.changeset/tender-gifts-fall.md b/.changeset/tender-gifts-fall.md new file mode 100644 index 0000000000..f53b9c1d5d --- /dev/null +++ b/.changeset/tender-gifts-fall.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': minor +--- + +Add new Select component for Canon diff --git a/.changeset/thin-snails-judge.md b/.changeset/thin-snails-judge.md new file mode 100644 index 0000000000..c2328ed64f --- /dev/null +++ b/.changeset/thin-snails-judge.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Resolved a problem where the `start` command did not correctly handle multiple `--require` flags, ensuring all specified modules are now properly loaded. diff --git a/.changeset/thin-steaks-trade.md b/.changeset/thin-steaks-trade.md deleted file mode 100644 index cd428601e6..0000000000 --- a/.changeset/thin-steaks-trade.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -'@backstage/plugin-catalog': patch ---- - -Update the default entity page extension component to support grouping multiple entity content items in the same tab. - -Disable all default groups: - -```diff -# app-config.yaml -app: - extensions: - # Pages -+ - page:catalog/entity: -+ config: -+ groups: [] -``` - -Create a custom list of : - -```diff -# app-config.yaml -app: - extensions: - # Pages -+ - page:catalog/entity: -+ config: -+ groups: -+ # This array of groups completely replaces the default groups -+ - custom: -+ title: 'Custom' -``` diff --git a/.changeset/tiny-swans-warn.md b/.changeset/tiny-swans-warn.md new file mode 100644 index 0000000000..45c6435a5d --- /dev/null +++ b/.changeset/tiny-swans-warn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home-react': patch +--- + +Fixes auto-hiding of content divider when title not specified diff --git a/.changeset/twenty-forks-cheat.md b/.changeset/twenty-forks-cheat.md new file mode 100644 index 0000000000..c0a7f03ee8 --- /dev/null +++ b/.changeset/twenty-forks-cheat.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Fix offset pagination to reset when updating filters in `useEntityList` diff --git a/.changeset/twenty-walls-join.md b/.changeset/twenty-walls-join.md new file mode 100644 index 0000000000..2282e28775 --- /dev/null +++ b/.changeset/twenty-walls-join.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': patch +--- + +Made "github:actions:dispatch" action idempotent diff --git a/.changeset/unlucky-carrots-shave.md b/.changeset/unlucky-carrots-shave.md new file mode 100644 index 0000000000..e0b4c0128b --- /dev/null +++ b/.changeset/unlucky-carrots-shave.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Fixed rendering issues in `ReportIssue` addon for unsupported repository types and improved shadow DOM event handling. The addon now properly prevents initialization when encountering unsupported repository types and correctly handles selection events within the shadow DOM. diff --git a/.changeset/weak-lemons-sing.md b/.changeset/weak-lemons-sing.md deleted file mode 100644 index e1a349b85e..0000000000 --- a/.changeset/weak-lemons-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-notifications-backend': patch ---- - -Improved notifications router tests diff --git a/.changeset/wet-penguins-beg.md b/.changeset/wet-penguins-beg.md new file mode 100644 index 0000000000..c4248f86f8 --- /dev/null +++ b/.changeset/wet-penguins-beg.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': minor +--- + +Internal update to move the `clean`, `pre/postpack` and `fix` commands into their own separate module. diff --git a/.changeset/whole-papers-retire.md b/.changeset/whole-papers-retire.md new file mode 100644 index 0000000000..fed9ff7aa3 --- /dev/null +++ b/.changeset/whole-papers-retire.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': minor +--- + +**BREAKING**: Added a new TextField component to replace the Field and Input component. After feedback, it became clear that we needed to build a more opinionated version to avoid any problem in the future. diff --git a/.changeset/wide-planets-camp.md b/.changeset/wide-planets-camp.md new file mode 100644 index 0000000000..c36ed69dff --- /dev/null +++ b/.changeset/wide-planets-camp.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +--- + +fixed misleading example location annotations in docs diff --git a/.changeset/witty-planets-sing.md b/.changeset/witty-planets-sing.md new file mode 100644 index 0000000000..4c58393d0e --- /dev/null +++ b/.changeset/witty-planets-sing.md @@ -0,0 +1,5 @@ +--- +'@backstage/canon': patch +--- + +Fix the Icon component when the name is not found to return null instead of an empty SVG. diff --git a/.changeset/young-gifts-know.md b/.changeset/young-gifts-know.md deleted file mode 100644 index 5e10ac74a3..0000000000 --- a/.changeset/young-gifts-know.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes': patch ---- - -Set deployment as the default group of Kubernetes entity content. It is just an example and shouldn't cause any visual difference since entity page tabs with just one entity content appear as normal tabs. diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b31cca1080..76a6afe4d6 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -53,3 +53,8 @@ yarn.lock @backstage/maintainers @backst /plugins/user-settings @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers /plugins/user-settings-backend @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers /plugins/user-settings-common @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers + +/packages/backend-plugin-api/src/services/definitions/AuditorService.ts @backstage/maintainers @backstage/auditor-maintainers +/packages/backend-defaults/src/entrypoints/auditor @backstage/maintainers @backstage/auditor-maintainers +/packages/backend-defaults/report-auditor.api.md @backstage/maintainers @backstage/auditor-maintainers +/docs/backend-system/core-services/auditor.md @backstage/maintainers @backstage/auditor-maintainers @backstage/documentation-maintainers diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index 5e92157fdf..7a83dc6e92 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -14,6 +14,8 @@ allowlisted Anddddd Apdex api +apis +approvers asciidoc async Atlassian @@ -72,6 +74,7 @@ config Config configmaps configs +configurability conformant const cookiecutter @@ -88,7 +91,7 @@ Datadog dataflow dayjs debounce -Debounce +debounces debuggability declaratively deduplicate @@ -103,11 +106,14 @@ destructured destructuring Deutsche dev +devcontainer +devcontainers devops devs dequeue dequeueing dialogs +disambiguator discoverability Discoverability dls @@ -136,6 +142,7 @@ Expedia facto failover Fargate +featureful Figma firehydrant FireHydrant @@ -190,9 +197,11 @@ Indal indexable ingestors inlined +inlining inlinehilite integrator's interop +interoperate iterable JaCoCo JavaScript @@ -222,12 +231,14 @@ learnings Leasot lerna Lerna +Levenshtein lightbox Lightsail limitranges LocalStack lockdown lockfile +lockfiles lookbehind lowercased lunr @@ -255,6 +266,7 @@ misconfiguration misconfigured mkdocs Mkdocs +modularization monorepo Monorepo monorepos @@ -274,6 +286,7 @@ neuro newrelic nginx nodegit +nodejs nohoist nonces noop @@ -326,6 +339,7 @@ PR pre prebaked preconfigured +prefilled prepack Preprarer productional @@ -341,7 +355,7 @@ pygments pymdownx rankdir readme -Readme +readmes readonly rebase rebasing @@ -393,6 +407,7 @@ serializable Serverless shoutout SIG +signoff SIGs siloed Sinon @@ -480,6 +495,7 @@ unregister unregistering unregistration unstarred +untemplated untracked upsert upstreams diff --git a/.github/workflows/api-breaking-changes-comment.yml b/.github/workflows/api-breaking-changes-comment.yml index 1593417e5d..af625f67ab 100644 --- a/.github/workflows/api-breaking-changes-comment.yml +++ b/.github/workflows/api-breaking-changes-comment.yml @@ -20,6 +20,7 @@ jobs: git-ref: ${{ steps.event.outputs.GIT_REF }} pr-number: ${{ steps.event.outputs.PR_NUMBER }} action: ${{ steps.event.outputs.ACTION }} + comment-cache-key: ${{ steps.hash.outputs.COMMENT_FILE_HASH }} steps: - name: Harden Runner uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 @@ -64,21 +65,29 @@ jobs: echo ACTION=$(jq --raw-output '.action | tostring | [scan("\\w+")][0]' < event.json) >> $GITHUB_OUTPUT echo GIT_REF=$(jq --raw-output '.pull_request.head.sha | tostring | [scan("\\w+")][0]' < event.json) >> $GITHUB_OUTPUT + - name: Fetch Command and Calculate Hash + id: hash + run: | + unzip preview-spec.zip comment.md + ls + echo "COMMENT_FILE_HASH=$(md5sum comment.md | awk '{ print $1 }')" >> $GITHUB_OUTPUT + + - name: Cache Comment + if: ${{ steps.event.outputs.ACTION != 'closed' }} + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + with: + path: comment.md + key: ${{ steps.hash.outputs.COMMENT_FILE_HASH }} + - name: DEBUG - Print Job Outputs if: ${{ runner.debug }} run: | echo "PR number: ${{ steps.event.outputs.PR_NUMBER }}" echo "Git Ref: ${{ steps.event.outputs.GIT_REF }}" echo "Action: ${{ steps.event.outputs.ACTION }}" + echo "Hash: ${{ steps.hash.outputs.COMMENT_FILE_HASH }}" cat event.json - - name: Get Comment - id: get-comment - run: | - unzip preview-spec.zip comment.md - ls - grep - add-comment: name: Write comment about issues needs: @@ -92,6 +101,13 @@ jobs: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - name: Fetch cached Manifests File + id: cache + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4 + with: + path: comment.md + key: ${{ needs.setup.outputs.comment-cache-key }} + # Identify comment to be updated - name: Find comment for API Changes uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e # v3 diff --git a/.github/workflows/api-breaking-changes.yml b/.github/workflows/api-breaking-changes.yml index 24bb23d1bc..fb2a443f58 100644 --- a/.github/workflows/api-breaking-changes.yml +++ b/.github/workflows/api-breaking-changes.yml @@ -46,7 +46,7 @@ jobs: cat ${{ github.event_path }} > event.json - name: Upload Artifacts - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: preview-spec path: | diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79ad0b144e..76898bc8d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -161,8 +161,8 @@ jobs: name: Test ${{ matrix.node-version }} services: - postgres16: - image: postgres:16 + postgres17: + image: postgres:17 env: POSTGRES_PASSWORD: postgres options: >- @@ -172,8 +172,8 @@ jobs: --health-retries 5 ports: - 5432/tcp - postgres12: - image: postgres:12 + postgres13: + image: postgres:13 env: POSTGRES_PASSWORD: postgres options: >- @@ -239,7 +239,7 @@ jobs: # Use the lower-level cache actions for the success cache, so that we can store the cache even on failed builds - name: restore backstage-cli cache - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4 + uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4 with: path: .cache/backstage-cli key: ${{ runner.os }}-v${{ matrix.node-version }}-backstage-cli-${{ github.run_id }} @@ -253,14 +253,14 @@ jobs: run: yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M --since origin/master --successCache --successCacheDir .cache/backstage-cli env: BACKSTAGE_TEST_DISABLE_DOCKER: 1 - BACKSTAGE_TEST_DATABASE_POSTGRES16_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres16.ports[5432] }} - BACKSTAGE_TEST_DATABASE_POSTGRES12_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres12.ports[5432] }} + BACKSTAGE_TEST_DATABASE_POSTGRES17_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres17.ports[5432] }} + BACKSTAGE_TEST_DATABASE_POSTGRES13_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres13.ports[5432] }} BACKSTAGE_TEST_DATABASE_MYSQL8_CONNECTION_STRING: mysql://root:root@localhost:${{ job.services.mysql8.ports[3306] }}/ignored BACKSTAGE_TEST_CACHE_REDIS7_CONNECTION_STRING: redis://localhost:${{ job.services.redis.ports[6379] }} # Always save success cache even if there were failures, that way it can be used in re-triggered builds - name: save backstage-cli cache - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4 + uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4 if: always() with: path: .cache/backstage-cli diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index f2ff2f3017..555cc351c8 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -59,7 +59,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 + uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 - name: Build and push uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d # v6.12.0 diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index 5c5227fbd5..28444cecfc 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -73,13 +73,29 @@ jobs: run: yarn build:api-docs - name: upload API reference - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: stable-reference path: docs/reference/ if-no-files-found: error retention-days: 1 + - name: microsite yarn install + run: yarn install --immutable + working-directory: microsite + + - name: build OpenAPI API docs + working-directory: microsite + run: yarn docusaurus gen-api-docs all + + - name: upload OpenAPI API docs + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: stable-openapi-docs + path: docs/**/api/**/* + if-no-files-found: error + retention-days: 1 + next: runs-on: ubuntu-latest concurrency: @@ -113,7 +129,7 @@ jobs: run: yarn build:api-docs - name: upload API reference - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: next-reference path: docs/reference/ @@ -130,13 +146,29 @@ jobs: working-directory: storybook - name: storybook upload - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: storybook path: storybook/dist/ if-no-files-found: error retention-days: 1 + - name: microsite yarn install + run: yarn install --immutable + working-directory: microsite + + - name: build OpenAPI API docs + working-directory: microsite + run: yarn docusaurus gen-api-docs all + + - name: upload OpenAPI API docs + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: next-openapi-docs + path: docs/**/api/**/* + if-no-files-found: error + retention-days: 1 + deploy-microsite-and-storybook: permissions: contents: write # for JamesIves/github-pages-deploy-action to push changes in repo @@ -179,11 +211,17 @@ jobs: working-directory: microsite - name: download stable reference - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 with: name: stable-reference path: docs/reference + - name: download stable OpenAPI API docs + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 + with: + name: stable-openapi-docs + path: docs + - name: grab lastest releases docs run: | git fetch origin master --depth 1 @@ -196,6 +234,9 @@ jobs: - name: clear API reference run: rm -r docs/reference + - name: clear OpenAPI reference + run: find ./docs -name '*.api.mdx' -type f -delete + # Next docs - name: checkout master uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -207,16 +248,22 @@ jobs: working-directory: microsite - name: download next reference - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 with: name: next-reference path: docs/reference + - name: download next OpenAPI API docs + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 + with: + name: next-openapi-docs + path: docs + - name: build microsite run: yarn build working-directory: microsite - - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 + - uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 with: name: storybook path: microsite/build/storybook diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index 19a6fd7e9d..e363fa4680 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -16,8 +16,8 @@ jobs: node-version: [20.x, 22.x] services: - postgres16: - image: postgres:16 + postgres17: + image: postgres:17 env: POSTGRES_PASSWORD: postgres options: >- @@ -27,8 +27,8 @@ jobs: --health-retries 5 ports: - 5432/tcp - postgres12: - image: postgres:12 + postgres13: + image: postgres:13 env: POSTGRES_PASSWORD: postgres options: >- @@ -94,7 +94,7 @@ jobs: run: yarn backstage-cli config:check --lax - name: backstage-cli cache - uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4 with: path: .cache/backstage-cli key: ${{ runner.os }}-v${{ matrix.node-version }}-backstage-cli-${{ github.run_id }} @@ -122,8 +122,8 @@ jobs: yarn backstage-cli repo test --maxWorkers=3 --workerIdleMemoryLimit=1300M --coverage --successCache --successCacheDir .cache/backstage-cli env: BACKSTAGE_TEST_DISABLE_DOCKER: 1 - BACKSTAGE_TEST_DATABASE_POSTGRES16_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres16.ports[5432] }} - BACKSTAGE_TEST_DATABASE_POSTGRES12_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres12.ports[5432] }} + BACKSTAGE_TEST_DATABASE_POSTGRES17_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres17.ports[5432] }} + BACKSTAGE_TEST_DATABASE_POSTGRES13_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres13.ports[5432] }} BACKSTAGE_TEST_DATABASE_MYSQL8_CONNECTION_STRING: mysql://root:root@localhost:${{ job.services.mysql8.ports[3306] }}/ignored BACKSTAGE_TEST_CACHE_REDIS7_CONNECTION_STRING: redis://localhost:${{ job.services.redis.ports[6379] }} diff --git a/.github/workflows/pr-review-comment-trigger.yaml b/.github/workflows/pr-review-comment-trigger.yaml index b8fbd01431..61252e7567 100644 --- a/.github/workflows/pr-review-comment-trigger.yaml +++ b/.github/workflows/pr-review-comment-trigger.yaml @@ -30,7 +30,7 @@ jobs: run: | mkdir -p ./pr echo $PR_NUMBER > ./pr/pr_number - - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: pr_number-${{ github.event.pull_request.number }} path: pr/ diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 6bae9157e3..4a5707087e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -58,7 +58,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: 'Upload artifact' - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: SARIF file path: results.sarif @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/upload-sarif@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 with: sarif_file: results.sarif diff --git a/.github/workflows/sync_snyk-monitor.yml b/.github/workflows/sync_snyk-monitor.yml index b965654fb9..aec03d09ee 100644 --- a/.github/workflows/sync_snyk-monitor.yml +++ b/.github/workflows/sync_snyk-monitor.yml @@ -58,6 +58,6 @@ jobs: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} NODE_OPTIONS: --max-old-space-size=7168 - name: Upload Snyk report - uses: github/codeql-action/upload-sarif@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/upload-sarif@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 with: sarif_file: snyk.sarif diff --git a/.github/workflows/verify_codeql.yml b/.github/workflows/verify_codeql.yml index 8e6df410ae..d028be98d8 100644 --- a/.github/workflows/verify_codeql.yml +++ b/.github/workflows/verify_codeql.yml @@ -55,7 +55,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/init@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -66,7 +66,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/autobuild@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -80,4 +80,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/analyze@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11 diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 8f2447ec26..7ae7e298e7 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -21,7 +21,7 @@ jobs: services: postgres: - image: postgres:12 + image: postgres:13 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index c46ba57e97..88c1bbc299 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -13,14 +13,178 @@ permissions: contents: read jobs: + stable: + runs-on: ubuntu-latest + concurrency: + group: stable-reference-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + + env: + CI: true + NODE_OPTIONS: --max-old-space-size=8192 + + outputs: + release: ${{ steps.find-release.outputs.result }} + + steps: + - name: Harden Runner + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + with: + egress-policy: audit + + - name: find latest release + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 + id: find-release + with: + script: | + const { data } = await github.rest.repos.listTags({ + owner: context.repo.owner, + repo: context.repo.repo, + per_page: 100, + }) + + const [{tag}] = data + .map(i => i.name) + .filter(tag => tag.match(/^v\d+\.\d+\.\d+$/)) + .map(tag => ({ + tag, + val: tag + .slice(1) + .split('.') + .reduce((val, part) => Number(val) * 1000 + Number(part)) + })) + .sort((a, b) => b.val - a.val) + + return tag + result-encoding: string + + - name: checkout latest release + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + ref: refs/tags/${{ steps.find-release.outputs.result }} + + - name: Use Node.js 20.x + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + with: + node-version: 20.x + registry-url: https://registry.npmjs.org/ # Needed for auth + + - name: yarn install + uses: backstage/actions/yarn-install@b3c1841fd69e1658ac631afafd0fb140a2309024 # v0.6.17 + with: + cache-prefix: ${{ runner.os }}-v20.x + + - name: build API reference + run: yarn build:api-docs + + - name: upload API reference + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: stable-reference + path: docs/reference/ + if-no-files-found: error + retention-days: 1 + + - name: microsite yarn install + run: yarn install --immutable + working-directory: microsite + + - name: build OpenAPI API docs + working-directory: microsite + run: yarn docusaurus gen-api-docs all + + - name: upload OpenAPI API docs + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: stable-openapi-docs + path: docs/**/api/**/* + if-no-files-found: error + retention-days: 1 + next: + runs-on: ubuntu-latest + concurrency: + group: next-reference-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + env: + CI: true + NODE_OPTIONS: --max-old-space-size=8192 + + steps: + - name: Harden Runner + uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 + with: + egress-policy: audit + + - name: checkout master + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Use Node.js 20.x + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + with: + node-version: 20.x + registry-url: https://registry.npmjs.org/ # Needed for auth + + - name: yarn install + uses: backstage/actions/yarn-install@b3c1841fd69e1658ac631afafd0fb140a2309024 # v0.6.17 + with: + cache-prefix: ${{ runner.os }}-v20.x + + - name: build API reference + run: yarn build:api-docs + + - name: upload API reference + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: next-reference + path: docs/reference/ + if-no-files-found: error + retention-days: 1 + + # Also build and upload storybook + - name: storybook yarn install + run: yarn install --immutable + working-directory: storybook + + - name: storybook build + run: yarn build-storybook + working-directory: storybook + + - name: storybook upload + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: storybook + path: storybook/dist/ + if-no-files-found: error + retention-days: 1 + + - name: microsite yarn install + run: yarn install --immutable + working-directory: microsite + + - name: build OpenAPI API docs + working-directory: microsite + run: yarn docusaurus gen-api-docs all + + - name: upload OpenAPI API docs + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: next-openapi-docs + path: docs/**/api/**/* + if-no-files-found: error + retention-days: 1 + build-microsite: runs-on: ubuntu-latest env: CI: true - NODE_OPTIONS: --max-old-space-size=8192 + NODE_OPTIONS: --max-old-space-size=16384 DOCUSAURUS_SSR_CONCURRENCY: 5 + needs: + - stable + - next + name: Microsite steps: - name: Harden Runner @@ -50,19 +214,63 @@ jobs: run: yarn install --immutable working-directory: microsite - - name: build API reference - run: yarn build:api-docs - - - name: Build MkDocs for TechDocs - run: mkdocs build --strict - - - name: verify yarn dependency duplicates - run: node scripts/verify-lockfile-duplicates.js - - name: prettier run: yarn prettier:check working-directory: microsite + - name: verify yarn dependency duplicates + run: node scripts/verify-lockfile-duplicates.js + + - name: download stable reference + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 + with: + name: stable-reference + path: docs/reference + + - name: download stable OpenAPI API docs + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 + with: + name: stable-openapi-docs + path: docs + + - name: grab lastest releases docs + run: | + git fetch origin master --depth 1 + git checkout FETCH_HEAD -- docs/releases + + - name: generate stable docs + run: yarn docusaurus docs:version stable + working-directory: microsite + + - name: clear API reference + run: rm -r docs/reference + + - name: clear OpenAPI reference + run: find ./docs -name '*.api.mdx' -type f -delete + + - name: build API reference + run: yarn build:api-docs + + - name: checkout master + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + clean: false + + - name: Build MkDocs for TechDocs + run: mkdocs build --strict + + - name: download next reference + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 + with: + name: next-reference + path: docs/reference + + - name: download next OpenAPI API docs + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4 + with: + name: next-openapi-docs + path: docs + - name: build microsite run: yarn build working-directory: microsite diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index 2c20df4ec6..1181273bb0 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -54,7 +54,7 @@ jobs: - run: yarn --cwd packages/canon build-storybook - - uses: chromaui/action@1fc59b137c52d2f7571c8cf0b40daad2794fd551 # v11 + - uses: chromaui/action@c93e0bc3a63aa176e14a75b61a31847cbfdd341c # v11 with: token: ${{ secrets.GITHUB_TOKEN }} # projectToken intentionally shared to allow collaborators to run Chromatic on forks diff --git a/.gitignore b/.gitignore index 6627583fce..25280b40b0 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,11 @@ bower_components # Documentation reference, generated by build:api-docs docs/reference +# OpenAPI auto-generated API documentation. +docs/**/*.api.mdx +docs/**/*.info.mdx +docs/**/sidebar.ts + # node-waf configuration .lock-wscript diff --git a/.prettierignore b/.prettierignore index cb744faa4c..04ca7d780d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,6 +4,7 @@ microsite canon-docs/.next canon-docs/public canon-docs/out +packages/canon/css coverage *.hbs templates diff --git a/.yarn/patches/ast-types-npm-0.14.2-43c4ac4b0d.patch b/.yarn/patches/ast-types-npm-0.14.2-43c4ac4b0d.patch new file mode 100644 index 0000000000..add3e4c556 --- /dev/null +++ b/.yarn/patches/ast-types-npm-0.14.2-43c4ac4b0d.patch @@ -0,0 +1,15 @@ +diff --git a/main.d.ts b/main.d.ts +index 6b9a8d05d61821a7e7dc831a52a9f7b505bfee42..1010bb5352d975a171a4019768ff6f6f2967c301 100644 +--- a/main.d.ts ++++ b/main.d.ts +@@ -1,7 +1,7 @@ +-import { ASTNode, Type, AnyType, Field } from "./lib/types"; +-import { NodePath } from "./lib/node-path"; ++import { ASTNode, type Type, AnyType, Field } from "./lib/types"; ++import { type NodePath } from "./lib/node-path"; + import { namedTypes } from "./gen/namedTypes"; +-import { builders } from "./gen/builders"; ++import { type builders } from "./gen/builders"; + import { Visitor } from "./gen/visitor"; + declare const astNodesAreEquivalent: { + (a: any, b: any, problemPath?: any): boolean; diff --git a/ADOPTERS.md b/ADOPTERS.md index 3d6ef63267..17ebefd4c6 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -5,7 +5,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | Organization | Contact | Description of Use | |-----------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Spotify](https://www.spotify.com) | [@helengreul](https://github.com/helengreul) | Main interface towards all of Spotify's infrastructure and technical documentation. | +| [Spotify](https://www.spotify.com) | [@mihaitabara](https://github.com/mihaitabara) | Main interface towards all of Spotify's infrastructure and technical documentation. | | [bol.com](https://www.bol.com) | [@acierto](https://github.com/acierto), [@clanghout](https://github.com/clanghout) | Initial work being done to unify platform tooling. | | [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. | | [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up | diff --git a/OWNERS.md b/OWNERS.md index 8dd5ec27d4..8190e31bfd 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -132,7 +132,6 @@ Scope: Tooling and Community Repo Maintainers for the Backstage [Community Plugi | André Wanlin | Spotify | [awanlin](https://github.com/awanlin) | `ahhhndre` | | Bethany Griggs | Red Hat | [BethGriggs](https://github.com/BethGriggs) | `bethgriggs` | | Kashish Mittal | Red Hat | [04kash](https://github.com/04kash) | `kashh._.` | -| Nick Boldt | Red Hat | [nickboldt](https://github.com/nickboldt) | `nboldt` | | Vincenzo Scamporlino | Spotify | [vinzscam](https://github.com/vinzscam) | `vinzscam` | ### Events @@ -175,6 +174,16 @@ Scope: The Scaffolder frontend and backend plugins, and related tooling. | ------------------- | ------------ | ------------------------------------- | ---------------- | | Bogdan Nechyporenko | Bol.com | [acierto](https://github.com/acierto) | `bogdan_haarlem` | +### Auditor + +Team: @backstage/auditor-maintainers + +Scope: The auditor core service, along with auditor usage in the main repository + +| Name | Organization | GitHub | Discord | +| ------------ | ------------ | ----------------------------------------------- | -------------- | +| Paul Schultz | Red Hat | [schultzp2020](https://github.com/schultzp2020) | `schultzp2020` | + ### Documentation Team: @backstage/documentation-maintainers @@ -189,11 +198,11 @@ Scope: The Backstage Documentation ## Sponsors -| Name | Organization | GitHub | Email | -| ----------------- | ------------ | ------------------------------------------- | ----------------- | -| Niklas Gustavsson | Spotify | [protocol7](https://github.com/protocol7) | ngn@spotify.com | -| Dave Zolotusky | Spotify | [dzolotusky](https://github.com/dzolotusky) | dzolo@spotify.com | -| Pia Nilsson | Spotify | [pianilsson](https://github.com/pianilsson) | pia@spotify.com | +| Name | Organization | GitHub | Email | +| ----------------- | ------------ | ------------------------------------------- | ------------------- | +| Niklas Gustavsson | Spotify | [protocol7](https://github.com/protocol7) | | +| Dave Zolotusky | Spotify | [dzolotusky](https://github.com/dzolotusky) | | +| Pia Nilsson | Spotify | [pianilsson](https://github.com/pianilsson) | | ## Organization Members diff --git a/README-fr_FR.md b/README-fr_FR.md index e0cffaa5c5..a54e9c8c49 100644 --- a/README-fr_FR.md +++ b/README-fr_FR.md @@ -66,7 +66,7 @@ Si vous voulez contribuer et vous impliquer dans notre communauté, voici les re ## Licence -Copyright 2020-2024 © Les auteurs de Backstage. Tous droits réservés. La Linux Foundation détient des marques déposées et utilise des marques commerciales. Pour une liste des marques de commerce de la Linux Foundation, veuillez consulter notre page d'utilisation des marques: https://www.linuxfoundation.org/trademark-usage +Copyright 2020-2025 © Les auteurs de Backstage. Tous droits réservés. La Linux Foundation détient des marques déposées et utilise des marques commerciales. Pour une liste des marques de commerce de la Linux Foundation, veuillez consulter notre page d'utilisation des marques: https://www.linuxfoundation.org/trademark-usage Sous licence Apache, version 2.0: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/README-ko_kr.md b/README-ko_kr.md index b2bba41567..e43aa60c43 100644 --- a/README-ko_kr.md +++ b/README-ko_kr.md @@ -65,7 +65,7 @@ Backstage의 문서는 다음을 포함합니다: ## License -Copyright 2020-2024 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage +Copyright 2020-2025 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/README-zh_Hans.md b/README-zh_Hans.md index 129c7e7aa4..4661564725 100644 --- a/README-zh_Hans.md +++ b/README-zh_Hans.md @@ -65,7 +65,7 @@ Backstage 的文档包括: ## 许可 -版权所有 2020-2024 © Backstage 作者。版权所有。Linux 基金会已注册商标并使用商标。有关 Linux 基金会的商标列表,请参阅我们的商标使用页面:https://www.linuxfoundation.org/trademark-usage +版权所有 2020-2025 © Backstage 作者。版权所有。Linux 基金会已注册商标并使用商标。有关 Linux 基金会的商标列表,请参阅我们的商标使用页面:https://www.linuxfoundation.org/trademark-usage 采用 Apache v2.0 许可:http://www.apache.org/licenses/LICENSE-2.0 diff --git a/README.md b/README.md index 64a7b34b64..e3e9bd77dd 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ See the [GOVERNANCE.md](https://github.com/backstage/community/blob/main/GOVERNA ## License -Copyright 2020-2024 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage +Copyright 2020-2025 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/beps/0004-scaffolder-task-idempotency/README.md b/beps/0004-scaffolder-task-idempotency/README.md index 208446158e..e23cc519d1 100644 --- a/beps/0004-scaffolder-task-idempotency/README.md +++ b/beps/0004-scaffolder-task-idempotency/README.md @@ -154,30 +154,36 @@ export function createGithubRepoCreateAction(options: { username: owner, }); - await ctx.checkpoint('repo.creation', async () => { - const repoCreationPromise = - user.data.type === 'Organization' - ? client.rest.repos.createInOrg({ - name: repo, - org: owner, - }) - : client.rest.repos.createForAuthenticatedUser({ - name: repo, - }); - const { repoUrl } = await repoCreationPromise; - return { repoUrl }; + await ctx.checkpoint({ + key: 'repo.creation.v1', + fn: async () => { + const repoCreationPromise = + user.data.type === 'Organization' + ? client.rest.repos.createInOrg({ + name: repo, + org: owner, + }) + : client.rest.repos.createForAuthenticatedUser({ + name: repo, + }); + const { repoUrl } = await repoCreationPromise; + return { repoUrl }; + }, }); if (secrets) { - await ctx.checkpoint('repo.create.variables', async () => { - for (const [key, value] of Object.entries(repoVariables ?? {})) { - await client.rest.actions.createRepoVariable({ - owner, - repo, - name: key, - value: value, - }); - } + await ctx.checkpoint({ + key: 'repo.create.variables', + fn: async () => { + for (const [key, value] of Object.entries(repoVariables ?? {})) { + await client.rest.actions.createRepoVariable({ + owner, + repo, + name: key, + value: value, + }); + } + }, }); } @@ -202,9 +208,12 @@ Checkpoints will allow action authors to create actions where code paths are ign This will be provided on a context object and action of author provide a key and a callback. ```typescript -await ctx.checkpoint('repo.creation', async () => { - const { repoUrl } = await client.rest.Repository.create({}); - return { repoUrl }; +await ctx.checkpoint({ + key: 'repo.creation', + fn: async () => { + const { repoUrl } = await client.rest.Repository.create({}); + return { repoUrl }; + }, }); ``` diff --git a/canon-docs/package.json b/canon-docs/package.json index 8558fac8e3..acd20cb66a 100644 --- a/canon-docs/package.json +++ b/canon-docs/package.json @@ -14,16 +14,16 @@ "@mdx-js/loader": "^3.1.0", "@mdx-js/react": "^3.1.0", "@next/mdx": "^15.1.4", - "@storybook/react": "^8.4.7", + "@storybook/react": "^8.6.8", "@uiw/codemirror-themes": "^4.23.7", "@uiw/react-codemirror": "^4.23.7", "motion": "^12.4.1", - "next": "14.2.23", + "next": "14.2.25", "react": "^18.0.2", "react-dom": "^18.0.2", "react-frame-component": "^5.2.7", "shiki": "^1.26.1", - "storybook": "^8.4.7" + "storybook": "^8.6.8" }, "devDependencies": { "@types/mdx": "^2.0.13", diff --git a/canon-docs/src/app/(docs)/components/box/page.mdx b/canon-docs/src/app/(docs)/components/box/page.mdx index 2e1d00a274..25ce3b6cd8 100644 --- a/canon-docs/src/app/(docs)/components/box/page.mdx +++ b/canon-docs/src/app/(docs)/components/box/page.mdx @@ -1,9 +1,10 @@ import { CodeBlock } from '@/components/CodeBlock'; import { PropsTable } from '@/components/PropsTable'; -import { spacePropsList } from '@/utils/spaceProps'; import { Tabs } from '@/components/Tabs'; import { Snippet } from '@/components/Snippet'; -import { BoxPreview } from '@/snippets/box'; +import { BoxSnippet } from '@/snippets/stories-snippets'; +import { boxPropDefs } from './props'; +import { spacingPropDefs } from '../../../../utils/propDefs'; # Box @@ -11,7 +12,7 @@ Box is the lowest-level component in Canon. It provides a consistent API for sty } + preview={} code={` `} @@ -36,60 +37,13 @@ Box is the lowest-level component in Canon. It provides a consistent API for sty This is the Box component, our lowest-level component. Here are all the available properties. - + Padding and margin are used to create space around your component using our predefined spacing tokens. We would recommend to use padding over margin to avoid collapsing margins but both are available. - + ## Examples diff --git a/canon-docs/src/app/(docs)/components/box/props.ts b/canon-docs/src/app/(docs)/components/box/props.ts new file mode 100644 index 0000000000..f3e38984dd --- /dev/null +++ b/canon-docs/src/app/(docs)/components/box/props.ts @@ -0,0 +1,24 @@ +import { + classNamePropDefs, + displayPropDefs, + heightPropDefs, + positionPropDefs, + stylePropDefs, + widthPropDefs, +} from '../../../../utils/propDefs'; +import type { PropDef } from '../../../../utils/propDefs'; + +export const boxPropDefs: Record = { + as: { + type: 'enum', + values: ['div', 'span'], + default: 'div', + responsive: true, + }, + ...widthPropDefs, + ...heightPropDefs, + ...positionPropDefs, + ...displayPropDefs, + ...classNamePropDefs, + ...stylePropDefs, +}; diff --git a/canon-docs/src/app/(docs)/components/button/page.mdx b/canon-docs/src/app/(docs)/components/button/page.mdx index c92b5b9921..e1ecee8920 100644 --- a/canon-docs/src/app/(docs)/components/button/page.mdx +++ b/canon-docs/src/app/(docs)/components/button/page.mdx @@ -2,16 +2,9 @@ import { PropsTable } from '@/components/PropsTable'; import { Snippet } from '@/components/Snippet'; import { Tabs } from '@/components/Tabs'; import { CodeBlock } from '@/components/CodeBlock'; -import { - ButtonPreview, - ButtonSizes, - ButtonWithIcons, - ButtonFullWidth, - ButtonDisabled, - ButtonResponsive, -} from '@/snippets/button'; -import { buttonVariants } from '@/snippets/_snippets'; -import { buttonPropDefs } from '../../../../../../packages/canon/src/components/Button/Button.props'; +import { ButtonSnippet } from '@/snippets/stories-snippets'; +import { buttonVariants } from '@/snippets/code-snippets'; +import { buttonPropDefs } from './props'; # Button @@ -20,7 +13,7 @@ A button component that can be used to trigger actions. } + preview={} code={` @@ -98,7 +91,7 @@ Here's a view when buttons have icons. align="center" py={4} open - preview={} + preview={} code={` @@ -114,7 +107,7 @@ Here's a view when buttons are full width. align="center" py={4} open - preview={} + preview={} code={` `} @@ -128,7 +121,7 @@ Here's a view when buttons are disabled. align="center" py={4} open - preview={} + preview={} code={``} /> @@ -136,11 +129,7 @@ Here's a view when buttons are disabled. Here's a view when buttons are responsive. -} + Responsive Button `} diff --git a/canon-docs/src/app/(docs)/components/button/props.ts b/canon-docs/src/app/(docs)/components/button/props.ts new file mode 100644 index 0000000000..813dcaa6f0 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/button/props.ts @@ -0,0 +1,19 @@ +import { classNamePropDefs, stylePropDefs } from '../../../../utils/propDefs'; +import type { PropDef } from '../../../../utils/propDefs'; + +export const buttonPropDefs: Record = { + variant: { + type: 'enum', + values: ['primary', 'secondary'], + default: 'primary', + responsive: true, + }, + size: { + type: 'enum', + values: ['small', 'medium'], + default: 'medium', + responsive: true, + }, + ...classNamePropDefs, + ...stylePropDefs, +}; diff --git a/canon-docs/src/app/(docs)/components/checkbox/page.mdx b/canon-docs/src/app/(docs)/components/checkbox/page.mdx index 26a5d0f955..413636dc9a 100644 --- a/canon-docs/src/app/(docs)/components/checkbox/page.mdx +++ b/canon-docs/src/app/(docs)/components/checkbox/page.mdx @@ -1,17 +1,19 @@ import { PropsTable } from '@/components/PropsTable'; -import { CheckboxPreview, CheckboxAllVariants } from '@/snippets/checkbox'; +import { CheckboxSnippet } from '@/snippets/stories-snippets'; import { Snippet } from '@/components/Snippet'; import { Tabs } from '@/components/Tabs'; import { CodeBlock } from '@/components/CodeBlock'; import { BaseUI } from '@/components/HeadlessBanners/BaseUI'; +import { checkboxPropDefs } from './props'; # Checkbox A checkbox component that can be used to trigger actions. } + preview={} code={``} /> @@ -42,50 +44,7 @@ A checkbox component that can be used to trigger actions. - void", - responsive: false, - }, - disabled: { - type: 'boolean', - responsive: false, - }, - required: { - type: 'boolean', - responsive: false, - }, - name: { - type: 'string', - responsive: false, - }, - value: { - type: 'string', - responsive: false, - }, - className: { - type: 'string', - responsive: false, - }, - style: { - type: 'CSSProperties', - responsive: false, - }, - }} -/> + ## Examples @@ -97,7 +56,7 @@ Here's a view when checkboxes have different variants. align="center" py={4} open - preview={} + preview={} code={` diff --git a/canon-docs/src/app/(docs)/components/checkbox/props.ts b/canon-docs/src/app/(docs)/components/checkbox/props.ts new file mode 100644 index 0000000000..8abbac1ec9 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/checkbox/props.ts @@ -0,0 +1,44 @@ +import { classNamePropDefs, stylePropDefs } from '../../../../utils/propDefs'; +import type { PropDef } from '../../../../utils/propDefs'; + +export const checkboxPropDefs: Record = { + label: { + type: 'string', + responsive: false, + }, + defaultChecked: { + type: 'enum', + values: ['boolean', "'indeterminate'"], + responsive: false, + }, + checked: { + type: 'enum', + values: ['boolean', "'indeterminate'"], + responsive: false, + }, + onChange: { + type: 'enum', + values: ["(checked: boolean | 'indeterminate') => void"], + responsive: false, + }, + disabled: { + type: 'enum', + values: ['boolean'], + responsive: false, + }, + required: { + type: 'enum', + values: ['boolean'], + responsive: false, + }, + name: { + type: 'string', + responsive: false, + }, + value: { + type: 'string', + responsive: false, + }, + ...classNamePropDefs, + ...stylePropDefs, +}; diff --git a/canon-docs/src/app/(docs)/components/container/page.mdx b/canon-docs/src/app/(docs)/components/container/page.mdx index ace3bdcaeb..40f0321624 100644 --- a/canon-docs/src/app/(docs)/components/container/page.mdx +++ b/canon-docs/src/app/(docs)/components/container/page.mdx @@ -1,9 +1,9 @@ import { CodeBlock } from '@/components/CodeBlock'; import { PropsTable } from '@/components/PropsTable'; -import { spacePropsList } from '@/utils/spaceProps'; import { Tabs } from '@/components/Tabs'; import { Snippet } from '@/components/Snippet'; -import { ContainerPreview } from '@/snippets/container'; +import { ContainerSnippet } from '@/snippets/stories-snippets'; +import { containerPropDefs } from './props'; # Container @@ -12,7 +12,7 @@ content on the page. } + preview={} code={` `} @@ -32,46 +32,7 @@ content on the page. ## API reference - + ## Examples diff --git a/canon-docs/src/app/(docs)/components/container/props.ts b/canon-docs/src/app/(docs)/components/container/props.ts new file mode 100644 index 0000000000..4a3410ec12 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/container/props.ts @@ -0,0 +1,12 @@ +import { + classNamePropDefs, + stylePropDefs, + gapPropDefs, +} from '../../../../utils/propDefs'; +import type { PropDef } from '../../../../utils/propDefs'; + +export const containerPropDefs: Record = { + ...gapPropDefs, + ...classNamePropDefs, + ...stylePropDefs, +}; diff --git a/canon-docs/src/app/(docs)/components/field/page.mdx b/canon-docs/src/app/(docs)/components/field/page.mdx index 83029be506..1526ce8c9f 100644 --- a/canon-docs/src/app/(docs)/components/field/page.mdx +++ b/canon-docs/src/app/(docs)/components/field/page.mdx @@ -2,14 +2,25 @@ import { PropsTable } from '@/components/PropsTable'; import { Snippet } from '@/components/Snippet'; import { Tabs } from '@/components/Tabs'; import { CodeBlock } from '@/components/CodeBlock'; -import { FieldPreview } from '@/snippets/field'; +import { FieldSnippet } from '@/snippets/stories-snippets'; import { BaseUI } from '@/components/HeadlessBanners/BaseUI'; +import { + fieldRootPropDefs, + fieldLabelPropDefs, + fieldDescriptionPropDefs, + fieldErrorPropDefs, +} from './props'; # Field A wrapper around `Input` or `Select` component to add label, description and error messages.. -} code={``} /> +} + code={``} +/> @@ -49,113 +60,25 @@ A wrapper around `Input` or `Select` component to add label, description and err Groups all parts of the field. Renders a `
` element. - string | string[] | null | Promise', - responsive: false, - }, - validationMode: { - type: ['onBlur', 'onChange'], - responsive: false, - }, - validationDebounceTime: { - type: 'number', - responsive: false, - }, - className: { - type: 'string', - responsive: false, - }, - style: { - type: 'CSSProperties', - responsive: false, - }, - }} -/> + ### Field.Label An accessible label that is automatically associated with the field control. Renders a `