diff --git a/.changeset/clever-streets-roll.md b/.changeset/clever-streets-roll.md new file mode 100644 index 0000000000..7efa961533 --- /dev/null +++ b/.changeset/clever-streets-roll.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-defaults': patch +--- + +Implementing `readTree` for `GoogleGcsReader` diff --git a/.changeset/cold-dogs-study.md b/.changeset/cold-dogs-study.md new file mode 100644 index 0000000000..a27309fc15 --- /dev/null +++ b/.changeset/cold-dogs-study.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-backend': patch +--- + +Some AWS `publisher` config options such as `region`, `endpoint`, `accountId` are now marked as `@visibility backend` instead of `secret`. diff --git a/.changeset/create-app-1766498726.md b/.changeset/create-app-1766498726.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1766498726.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/create-app-1767101113.md b/.changeset/create-app-1767101113.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1767101113.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/easy-maps-appear.md b/.changeset/easy-maps-appear.md new file mode 100644 index 0000000000..67c97c20f6 --- /dev/null +++ b/.changeset/easy-maps-appear.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': minor +--- + +Widget configurations are now only saved to storage when the Save button is explicitly clicked. Added a Cancel button that allows users to discard unsaved changes and revert to the last saved state. diff --git a/.changeset/few-teams-punch.md b/.changeset/few-teams-punch.md new file mode 100644 index 0000000000..4443c43170 --- /dev/null +++ b/.changeset/few-teams-punch.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +The MarkdownContent component now handles HTML content the same way as GitHub when rendering GitHub-flavored Markdown diff --git a/.changeset/hungry-mugs-fall.md b/.changeset/hungry-mugs-fall.md new file mode 100644 index 0000000000..4332d92cc3 --- /dev/null +++ b/.changeset/hungry-mugs-fall.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Implementing `ScmIntegration` for `GoogleGcs` diff --git a/.changeset/polite-pillows-accept.md b/.changeset/polite-pillows-accept.md new file mode 100644 index 0000000000..ece7c02ee1 --- /dev/null +++ b/.changeset/polite-pillows-accept.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Rollback the lowercase replacing in GitHub integration config diff --git a/.changeset/pre.json b/.changeset/pre.json index a985ff639f..f668ddbe53 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -206,5 +206,25 @@ "@backstage/plugin-user-settings-backend": "0.3.9", "@backstage/plugin-user-settings-common": "0.0.1" }, - "changesets": [] + "changesets": [ + "better-ghosts-tell", + "clever-streets-roll", + "cold-dogs-study", + "create-app-1766498726", + "create-app-1767101113", + "dependabot-aed8e01", + "every-bears-add", + "few-teams-punch", + "hot-colts-float", + "hungry-mugs-fall", + "major-mangos-shine", + "polite-pillows-accept", + "proud-streets-switch", + "shaggy-bats-film", + "slick-laws-push", + "thin-teams-roll", + "twenty-candles-open", + "weak-lemons-create", + "wild-toys-retire" + ] } diff --git a/.changeset/slick-laws-push.md b/.changeset/slick-laws-push.md new file mode 100644 index 0000000000..d61e6d387b --- /dev/null +++ b/.changeset/slick-laws-push.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Updated Dockerfile to use Node 24 and Debian Trixie diff --git a/.changeset/twenty-candles-open.md b/.changeset/twenty-candles-open.md new file mode 100644 index 0000000000..94050dea05 --- /dev/null +++ b/.changeset/twenty-candles-open.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-search': patch +--- + +Update for the `qs` library bump: the old array limit setting has changed to be more strict; you can no longer just give a zero to mean unlimited. So we choose an arbitrary high value, to at least go higher than the default 20. diff --git a/.cursor/rules/general.mdc b/.cursor/rules/general.mdc new file mode 100644 index 0000000000..3a81a0cb5f --- /dev/null +++ b/.cursor/rules/general.mdc @@ -0,0 +1,7 @@ +--- +description: General project guidelines for Backstage development +globs: +alwaysApply: true +--- + +Follow the instructions at /.github/copilot-instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 98073c5128..ee3fe6fda0 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,11 +1,22 @@ -This is a TypeScript project structured as a monorepo using Yarn workspaces. +Backstage is an open platform for building developer portals. This is a TypeScript monorepo using Yarn workspaces. + +## Key Directories + +- `/packages`: Core framework packages (prefixed `@backstage/`) +- `/plugins`: Plugin packages (prefixed `@backstage/plugin-*`) +- `/packages/app` and `/packages/backend`: Example app for local development +- `/packages/app-next`: Example app using the new frontend system (NFS) +- `/docs`: Documentation files + +Packages prefixed with `core-` (e.g., `@backstage/core-plugin-api`) are part of the old frontend system. Packages prefixed with `frontend-` (e.g., `@backstage/frontend-plugin-api`) are part of the new frontend system (NFS). Packages prefixed with `backend-` (e.g., `@backstage/backend-plugin-api`) are part of the backend system. ## Code Standards The following files contain guidelines for the project: +- `/CONTRIBUTING.md`: comprehensive contribution guidelines. - `/STYLE.md`: guidelines for code style. -- `/REVIEWING.md`: guidelines for pull requests. +- `/REVIEWING.md`: guidelines for pull requests and writing changesets. - `/SECURITY.md`: guidelines for security. - `/docs/architecture-decisions/`: contains the architecture decisions for the project. @@ -19,10 +30,12 @@ Before any of these commands can be run, you need to run `yarn install` in the p - Code formatting: Use `yarn prettier --write ` to format code. - Lint: Use `yarn lint --fix` in the project root to run the linter. - API reports: Before submitting a pull request with changes to any package in the workspace, run `yarn build:api-reports` in the project root to generate API reports for all packages. +- Dev server: Use `yarn start` to run the example app locally (frontend on :3000, backend on :7007). +- Create: Use `yarn new` to scaffold new plugins, packages, or modules. You MUST NOT create a release by running `yarn changesets version` or `yarn release` as part of any changes. Releases are created by separate workflows. -All changes that affect the published version of packages in the `/packages` and `/plugins` directories must be accompanied by a changeset. See the guidelines in `/REVIEWING.md` for information on how to write good changesets. Changesets are stored in the `/.changeset` directory. Breaking changes must be accompanied by a `minor` version bump for packages that below version `1.0.0`, or a `major` version bump for packages that are at version `1.0.0` or higher. +All changes that affect the published version of packages in the `/packages` and `/plugins` directories must be accompanied by a changeset. Only non-private packages require changesets. See the guidelines in `/CONTRIBUTING.md#creating-changesets` for information on how to write good changesets. Changesets are stored in the `/.changeset` directory. Breaking changes must be accompanied by a `minor` version bump for packages below version `1.0.0`, or a `major` version bump for packages at version `1.0.0` or higher. Never update ESLint, Prettier, or TypeScript configuration files unless specifically requested. diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index 44ee42a25a..0bce80f5f0 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -523,6 +523,7 @@ transpile transpiled transpiler transpilers +trixie truthy tsconfig TSDoc @@ -577,3 +578,4 @@ zoomable zsh resizable enums +LLMs diff --git a/.github/workflows/api-breaking-changes-comment.yml b/.github/workflows/api-breaking-changes-comment.yml index 654d73b4d4..4645dd8c23 100644 --- a/.github/workflows/api-breaking-changes-comment.yml +++ b/.github/workflows/api-breaking-changes-comment.yml @@ -122,6 +122,6 @@ jobs: uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.find-comment.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} + issue-number: ${{ needs.setup.outputs.pr-number }} body-path: comment.md edit-mode: replace diff --git a/.github/workflows/api-breaking-changes.yml b/.github/workflows/api-breaking-changes.yml index 934add0716..71a7e9b226 100644 --- a/.github/workflows/api-breaking-changes.yml +++ b/.github/workflows/api-breaking-changes.yml @@ -27,7 +27,7 @@ jobs: run: git fetch --depth 1 origin ${{ github.base_ref }} - name: setup-node - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 36b4114efe..55e01009c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth @@ -71,7 +71,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth @@ -220,7 +220,7 @@ jobs: run: git fetch origin ${{ github.event.pull_request.base.ref }} - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index 0cf49b4b8a..f7bb55c1b9 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -31,7 +31,7 @@ jobs: ref: ${{ github.event.client_payload.version && env.RELEASE_VERSION || github.ref }} - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index 08f349c7ec..52684d5529 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -59,7 +59,7 @@ jobs: ref: refs/tags/${{ steps.find-release.outputs.result }} - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth @@ -143,7 +143,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth @@ -245,7 +245,7 @@ jobs: egress-policy: audit - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index b8bc3fd120..5135e0a1e2 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -71,7 +71,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/mui-migration-tracker.yml b/.github/workflows/mui-migration-tracker.yml index 7ed8013a3b..ffde14b5f0 100644 --- a/.github/workflows/mui-migration-tracker.yml +++ b/.github/workflows/mui-migration-tracker.yml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - name: Setup Node.js - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/sync_canon.yml b/.github/workflows/sync_canon.yml index 9da6c80b98..ea6d47bbf5 100644 --- a/.github/workflows/sync_canon.yml +++ b/.github/workflows/sync_canon.yml @@ -16,7 +16,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml index 9719a34886..7311d52ae4 100644 --- a/.github/workflows/sync_code-formatting.yml +++ b/.github/workflows/sync_code-formatting.yml @@ -20,7 +20,7 @@ jobs: fetch-depth: 0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/sync_patch-release.yml b/.github/workflows/sync_patch-release.yml index bdf93aa8a0..4e3a622007 100644 --- a/.github/workflows/sync_patch-release.yml +++ b/.github/workflows/sync_patch-release.yml @@ -37,7 +37,7 @@ jobs: token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/sync_release-manifest.yml b/.github/workflows/sync_release-manifest.yml index 7452505a22..871b8b9712 100644 --- a/.github/workflows/sync_release-manifest.yml +++ b/.github/workflows/sync_release-manifest.yml @@ -19,7 +19,7 @@ jobs: ref: v${{ github.event.client_payload.version }} - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml index 97f7e8ed14..0d1233020c 100644 --- a/.github/workflows/sync_snyk-github-issues.yml +++ b/.github/workflows/sync_snyk-github-issues.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/sync_version-packages.yml b/.github/workflows/sync_version-packages.yml index 683d527e45..3ba9833645 100644 --- a/.github/workflows/sync_version-packages.yml +++ b/.github/workflows/sync_version-packages.yml @@ -26,7 +26,7 @@ jobs: token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/verify_accessibility.yml b/.github/workflows/verify_accessibility.yml index 82d26ca510..8f1b611f1f 100644 --- a/.github/workflows/verify_accessibility.yml +++ b/.github/workflows/verify_accessibility.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x - name: yarn install diff --git a/.github/workflows/verify_chromatic.yml b/.github/workflows/verify_chromatic.yml index a9d83b01e3..f08441bcc1 100644 --- a/.github/workflows/verify_chromatic.yml +++ b/.github/workflows/verify_chromatic.yml @@ -34,7 +34,7 @@ jobs: fetch-depth: 10000 # Required to retrieve git history - name: Use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 436995ddc2..55d92b30b3 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -55,7 +55,7 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index 07c751e098..6fecbc5aaf 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -42,7 +42,7 @@ jobs: python-version: '3.9' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} - name: yarn install diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index f63eb5d61b..add71648da 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -52,7 +52,7 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index 20a6e705cd..f8239aed73 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -64,7 +64,7 @@ jobs: ref: refs/tags/${{ steps.find-release.outputs.result }} - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth @@ -145,7 +145,7 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x registry-url: https://registry.npmjs.org/ # Needed for auth @@ -241,7 +241,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 diff --git a/.github/workflows/verify_microsite_accessibility.yml b/.github/workflows/verify_microsite_accessibility.yml index 0c428ae359..0bfab3035b 100644 --- a/.github/workflows/verify_microsite_accessibility.yml +++ b/.github/workflows/verify_microsite_accessibility.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Use Node.js 22.x - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 22.x diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml index f7de04772d..c15388d6b4 100644 --- a/.github/workflows/verify_windows.yml +++ b/.github/workflows/verify_windows.yml @@ -36,7 +36,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ba40be86c8..80381417a0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,6 +17,7 @@ If you need help, just jump into our [Discord chatroom](https://discord.gg/backs - [Accessibility](#accessibility) - [Get Started!](#get-started) - [Coding Guidelines](#coding-guidelines) +- [AI Use Policy and Guidelines](#ai-use-policy-and-guidelines) - [Documentation Guidelines](#documentation-guidelines) - [Package Scripts](#package-scripts) - [Local configuration](#local-configuration) @@ -128,6 +129,37 @@ If there are any updates in `markdown` file please make sure to run `yarn run li The Backstage development environment does not require any specific editor, but it is intended to be used with one that has built-in linting and type-checking. The development server does not include any checks by default, but they can be enabled using the `--check` flag. Note that using the flag may consume more system resources and slow things down. +## AI Use Policy and Guidelines + +Our goal in the Backstage project is to develop an excellent software system. This requires careful attention to detail in every change we integrate. Maintainer time and attention is very limited, so it's important that changes you ask us to review represent your _best_ work. + +You are encouraged to use tools that help you write good code, including AI tools. However, you always need to understand and explain the changes you're proposing to make, whether or not you used an LLM as part of your process to produce them. The answer to "Why did you make change X?" should never be "I'm not sure. The AI did it." + +**Do not submit an AI-generated PR you haven't personally understood and tested**, as this wastes maintainers' time. PRs that appear to violate this guideline will be closed without review. If you do submit a largely AI-generated PR, clearly mark it as such in the description—maintainers may still close it without further review if it does not seem worthwhile. + +### Using AI as a Coding Assistant + +1. Don't skip **becoming familiar with the part of the codebase** you're working on. This will let you write better prompts and validate their output if you use an LLM. Code assistants can be a useful search engine/discovery tool in this process, but don't trust claims they make about how Backstage works. LLMs are often wrong, even about details that are clearly answered in the [Backstage documentation](https://backstage.io/docs). +2. Split up your changes into **coherent commits**, even if an LLM generates them all in one go. See our section on [Creating Changesets](#creating-changesets) for guidance on documenting your changes. +3. Don't simply ask an LLM to add **code comments**, as it will likely produce a bunch of text that unnecessarily explains what's already clear from the code. If using an LLM to generate comments, be really specific in your request, demand succinctness, and carefully edit the result. + +### Using AI for Communication + +Backstage contributors are expected to communicate with intention, to avoid wasting maintainer time with long, sloppy writing. We strongly prefer clear and concise communication about points that actually require discussion over long AI-generated comments. + +When you use an LLM to write a message for you, it remains **your responsibility** to read through the whole thing and make sure that it makes sense to you and represents your ideas concisely. A good rule of thumb is that if you can't make yourself carefully read some LLM output that you generated, nobody else wants to read it either. + +Here are some concrete guidelines for using LLMs as part of your communication workflows: + +1. When writing a pull request description, **do not include anything that's obvious** from looking at your changes directly (e.g., files changed, functions updated, etc.). Instead, focus on the _why_ behind your changes. Don't ask an LLM to generate a PR description on your behalf based on your code changes, as it will simply regurgitate the information that's already there. +2. Similarly, when responding to a pull request comment, **explain _your_ reasoning**. Don't prompt an LLM to re-describe what can already be seen from the code. +3. Verify that **everything you write is accurate**, whether or not an LLM generated any part of it. Backstage's maintainers will be unable to review your contributions if you misrepresent your work (e.g., wrongly describing your code changes, their effect, or your testing process). +4. Complete all parts of the **PR description template**, including screenshots and the checklist. Don't simply overwrite the template with LLM output. +5. **Clarity and succinctness** are much more important than perfect grammar, so you shouldn't feel obliged to pass your writing through an LLM. If you do ask an LLM to clean up your writing style, be sure it does _not_ make it longer in the process. Demand succinctness in your prompt. +6. Quoting an LLM answer is usually less helpful than linking to **relevant primary sources**, like source code, [Backstage documentation](https://backstage.io/docs), or reference materials. If you do need to quote an LLM answer in a discussion, clearly distinguish LLM output from your own thoughts. + +If you have questions about AI usage or need help, feel free to ask in [Discord](https://discord.gg/backstage-687207715902193673). + ## Documentation Guidelines Contributing to the docs is one of the best ways to start getting involved with Backstage. The documentation site is often the first stop for anyone using or exploring Backstage, so even small improvements can have a big impact! diff --git a/docs-ui/yarn.lock b/docs-ui/yarn.lock index 755b88ec09..19ce3640f5 100644 --- a/docs-ui/yarn.lock +++ b/docs-ui/yarn.lock @@ -1603,9 +1603,9 @@ __metadata: languageName: node linkType: hard -"@uiw/codemirror-extensions-basic-setup@npm:4.25.3": - version: 4.25.3 - resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.25.3" +"@uiw/codemirror-extensions-basic-setup@npm:4.25.4": + version: 4.25.4 + resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.25.4" dependencies: "@codemirror/autocomplete": "npm:^6.0.0" "@codemirror/commands": "npm:^6.0.0" @@ -1622,7 +1622,7 @@ __metadata: "@codemirror/search": ">=6.0.0" "@codemirror/state": ">=6.0.0" "@codemirror/view": ">=6.0.0" - checksum: 10/6ece4ee0fd6433a81bb6b2e18623db3df097d31d13c53184fbf4355cf3aaac5201d73dfa984f58390f0f6f7cfb631bd2ee20f3613b99b7259e2e1352e954c179 + checksum: 10/8fa523af7cb4ea36db5263221e5a34ecbf18e57ee5c57fbb46f7bfd08ff08523b9fe2c5ae376117d98edaa1a904d1a2966123710e0d866a78ec2d1359955773c languageName: node linkType: hard @@ -1642,14 +1642,14 @@ __metadata: linkType: hard "@uiw/react-codemirror@npm:^4.23.7": - version: 4.25.3 - resolution: "@uiw/react-codemirror@npm:4.25.3" + version: 4.25.4 + resolution: "@uiw/react-codemirror@npm:4.25.4" dependencies: "@babel/runtime": "npm:^7.18.6" "@codemirror/commands": "npm:^6.1.0" "@codemirror/state": "npm:^6.1.1" "@codemirror/theme-one-dark": "npm:^6.0.0" - "@uiw/codemirror-extensions-basic-setup": "npm:4.25.3" + "@uiw/codemirror-extensions-basic-setup": "npm:4.25.4" codemirror: "npm:^6.0.0" peerDependencies: "@babel/runtime": ">=7.11.0" @@ -1659,7 +1659,7 @@ __metadata: codemirror: ">=6.0.0" react: ">=17.0.0" react-dom: ">=17.0.0" - checksum: 10/a3ece671a48cce623da6c9d890f07bdbb1597b2fb2a6f8f6ef65f2b14b5d5b4fa90791476539b4fba3ac13d226fe00d283a5165d3632f34f5db3b49139a8887d + checksum: 10/679966cfa5cc2e7d5b7c8b40060018bebfc3a2d66492672c64e659e1c719cedd7a10ed7fb3aa014d77c42927581c4ebdf6760ab56568225781798b35dc13b8c6 languageName: node linkType: hard diff --git a/docs/assets/getting-started/create-app-output.png b/docs/assets/getting-started/create-app-output.png index 1987ea41e1..305f2e001a 100644 Binary files a/docs/assets/getting-started/create-app-output.png and b/docs/assets/getting-started/create-app-output.png differ diff --git a/docs/assets/getting-started/login-to-app-as-guest-user.png b/docs/assets/getting-started/login-to-app-as-guest-user.png new file mode 100644 index 0000000000..79c897dcb6 Binary files /dev/null and b/docs/assets/getting-started/login-to-app-as-guest-user.png differ diff --git a/docs/assets/getting-started/portal.png b/docs/assets/getting-started/portal.png index b3133f2278..fd7d52d193 100644 Binary files a/docs/assets/getting-started/portal.png and b/docs/assets/getting-started/portal.png differ diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 04b72da445..852248d543 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -53,7 +53,7 @@ Once the host build is complete, we are ready to build our image. The following `Dockerfile` is included when creating a new app with `@backstage/create-app`: ```dockerfile -FROM node:22-bookworm-slim +FROM node:24-trixie-slim # Set Python interpreter for `node-gyp` to use ENV PYTHON=/usr/bin/python3 @@ -178,7 +178,7 @@ the repo root: ```dockerfile # Stage 1 - Create yarn install skeleton layer -FROM node:22-bookworm-slim AS packages +FROM node:24-trixie-slim AS packages WORKDIR /app COPY backstage.json package.json yarn.lock ./ @@ -193,7 +193,7 @@ COPY plugins plugins RUN find packages \! -name "package.json" -mindepth 2 -maxdepth 2 -exec rm -rf {} \+ # Stage 2 - Install dependencies and build packages -FROM node:22-bookworm-slim AS build +FROM node:24-trixie-slim AS build # Set Python interpreter for `node-gyp` to use ENV PYTHON=/usr/bin/python3 @@ -231,7 +231,7 @@ RUN mkdir packages/backend/dist/skeleton packages/backend/dist/bundle \ && tar xzf packages/backend/dist/bundle.tar.gz -C packages/backend/dist/bundle # Stage 3 - Build the actual backend image and install production dependencies -FROM node:22-bookworm-slim +FROM node:24-trixie-slim # Set Python interpreter for `node-gyp` to use ENV PYTHON=/usr/bin/python3 diff --git a/docs/frontend-system/building-apps/08-migrating.md b/docs/frontend-system/building-apps/08-migrating.md index 1fd74becfc..88dff704c4 100644 --- a/docs/frontend-system/building-apps/08-migrating.md +++ b/docs/frontend-system/building-apps/08-migrating.md @@ -698,16 +698,16 @@ import { SidebarContent } from './Sidebar'; export const navModule = createFrontendModule({ pluginId: 'app', - extensions: [sidebarContent], + extensions: [SidebarContent], }); ``` -Then in the actual implementation for the `sidebarContent` extension, you can provide something like the following, where you implement the entire `Sidebar` component. +Then in the actual implementation for the `SidebarContent` extension, you can provide something like the following, where you implement the entire `Sidebar` component. ```tsx title="in packages/app/src/modules/nav/Sidebar.tsx" import { NavContentBlueprint } from '@backstage/frontend-plugin-api'; -export const sidebarContent = NavContentBlueprint.make({ +export const SidebarContent = NavContentBlueprint.make({ params: { component: ({ items }) => ( diff --git a/docs/getting-started/config/database.md b/docs/getting-started/config/database.md index eed1586dc8..d325c73d5f 100644 --- a/docs/getting-started/config/database.md +++ b/docs/getting-started/config/database.md @@ -129,13 +129,13 @@ You can run Postgres in a Docker container, this is great for local development First we need to pull down the container image, we'll use Postgres 17, check out the [Postgres Version Policy](../../overview/versioning-policy.md#postgresql-releases) to learn which versions are supported. ```shell -docker pull postgres:17.0-bookworm +docker pull postgres:17.0-trixie ``` Then we just need to start up the container. ```shell -docker run -d --name postgres --restart=always -p 5432:5432 -e POSTGRES_PASSWORD= postgres:17.0-bookworm +docker run -d --name postgres --restart=always -p 5432:5432 -e POSTGRES_PASSWORD= postgres:17.0-trixie ``` This will run Postgres in the background for you, but remember to start it up again when you reboot your system. @@ -149,7 +149,7 @@ version: '4' services: postgres: - image: postgres:17.0-bookworm + image: postgres:17.0-trixie environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 876af4f0a5..c7aabb7bd5 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -1,8 +1,8 @@ --- id: index -title: Creating your Backstage App -sidebar_label: Introduction -description: How to install Backstage for your own use. +title: Standalone Installation +sidebar_label: Standalone Installation +description: How to create and run a Standalone Backstage. --- Audience: Developers and Admins @@ -11,11 +11,11 @@ Audience: Developers and Admins It is not required, although recommended to have a basic understanding of [Yarn](https://www.pluralsight.com/guides/yarn-a-package-manager-for-node-js) and [npm](https://docs.npmjs.com/about-npm) before starting this guide. ::: -## Summary +## Overview -This guide walks through how to get started creating your very own Backstage customizable app. This is the first step in evaluating, developing on, or demoing Backstage. +This guide walks through how to create your own Backstage customizable app. This is the first step in evaluating, developing on, or demoing Backstage. -By the end of this guide, you will have a standalone Backstage installation running locally with a `SQLite` database and demo content. To be clear, this is not a production-ready installation, and it does not contain information specific to your organization. +By the end of this guide, you will have a standalone Backstage installation running locally with an in-memory `SQLite` database and demo content. To be clear, this is not a production-ready installation, and it does not contain information specific to your organization until you set up integrations with your specific data sources! :::note Contributors @@ -23,46 +23,9 @@ If you are planning to contribute a new feature or bug fix to the Backstage proj ::: -## Prerequisites +The instructions make use of `npx`. `npx` is a tool that comes preinstalled with Node.js and lets you run commands straight from `npm` or other registries. -This guide also assumes a basic understanding of working on a Linux based operating system and have some experience with the terminal, specifically, these commands: `npm`, `yarn`. - -- Access to a Unix-based operating system, such as Linux, macOS or - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/) -- A GNU-like build environment available at the command line. - For example, on Debian/Ubuntu you will want to have the `make` and `build-essential` packages installed. - On macOS, you will want to run `xcode-select --install` to get the XCode command line build tooling in place. -- An account with elevated rights to install the dependencies -- `curl` or `wget` installed -- Node.js [Active LTS Release](../overview/versioning-policy.md#nodejs-releases) installed using one of these - methods: - - Using `nvm` (recommended) - - [Installing nvm](https://github.com/nvm-sh/nvm#install--update-script) - - [Install and change Node version with nvm](https://nodejs.org/en/download/package-manager/#nvm) - - Node 20 is a good starting point, this can be installed using `nvm install lts/iron` - - [Binary Download](https://nodejs.org/en/download/) - - [Package manager](https://nodejs.org/en/download/package-manager/) - - [Using NodeSource packages](https://github.com/nodesource/distributions/blob/master/README.md) -- `yarn` [Installation](https://yarnpkg.com/getting-started/install) - - Backstage currently uses Yarn 4.4.1, once you've ran `corepack enable` you'll want to then run `yarn set version 4.4.1` -- `docker` [installation](https://docs.docker.com/engine/install/) -- `git` [installation](https://github.com/git-guides/install-git) -- If the system is not directly accessible over your network the following ports - need to be opened: 3000, 7007. This is quite uncommon, unless you're installing in a container, VM or remote system. - -## 1. Create your Backstage App - -:::caution - -The Backstage app we'll be creating will only have demo data until we set up integrations with your specific data sources! - -::: - -To install the Backstage Standalone app, we will make use of `npx`. `npx` is a tool that comes preinstalled with Node.js and lets you run commands straight from `npm` or other registries. Before we run the command, let's discuss what it does. - -This command will create a new directory with a Backstage app inside. The wizard will ask you for the name of the app. This name will be created as subdirectory in your current working directory. - -![create app](../assets/getting-started/create-app-output.png) +This command creates a new directory with a Backstage app inside. The wizard will ask you for the name of the app. This name will be created as a subdirectory in your current working directory. Inside that directory, it will generate all the files and folder structure needed for you to run your app. @@ -100,65 +63,122 @@ app and [TechDocs](https://backstage.io/docs/features/techdocs/) amongst other things. -Now, that we know what it does, let's run it! +## Prerequisites -```bash -npx @backstage/create-app@latest -``` +This guide also assumes a basic understanding of working on a Linux based operating system and have some experience with the terminal, specifically, these commands: `npm`, `yarn`. + +- A minimum of 20 GB disk space to run the standalone Backstage application with demo data. NOTE: As you add more modules and plugins to an installation, the disk space requirements will increase, accordingly. +- A minimum of 6 GB memory. +- Access to a Unix-based operating system, such as Linux, macOS or + [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/). The Linux version must support the required Node.js version. +- A GNU-like build environment available at the command line. + For example, on Debian/Ubuntu you will want to have the `make` and `build-essential` packages installed. + On macOS, you will want to run `xcode-select --install` to get the XCode command line build tooling in place. +- An account with elevated rights to install the dependencies +- `curl` or `wget` installed +- Node.js [Active LTS Release](../overview/versioning-policy.md#nodejs-releases) installed using one of these + methods: + - Using `nvm` (recommended) + - [Installing nvm](https://github.com/nvm-sh/nvm#install--update-script) + - [Install and change Node version with nvm](https://nodejs.org/en/download/package-manager/#nvm) + - Node 24 is a good starting point, this can be installed using `nvm install lts/krypton` + - [Binary Download](https://nodejs.org/en/download/) + - [Package manager](https://nodejs.org/en/download/package-manager/) + - [Using NodeSource packages](https://github.com/nodesource/distributions/blob/master/README.md) +- Install the `isolated-vm` module, following their [requirements section](https://github.com/laverdet/isolated-vm#requirements). +- `yarn` [Installation](https://yarnpkg.com/getting-started/install) + - Backstage currently uses Yarn 4.4.1, once you've ran `corepack enable` you'll want to then run `yarn set version 4.4.1` +- `docker` [installation](https://docs.docker.com/engine/install/) +- `git` [installation](https://github.com/git-guides/install-git) +- If the system is not directly accessible over your network the following ports + need to be opened: 3000, 7007. This is quite uncommon, unless you're installing in a container, VM or remote system. + +## Creating and running a Backstage application This may take a few minutes to fully install everything. Don't stress if the loading seems to be spinning nonstop, there's a lot going on in the background. -:::note +To create the application: -If this fails on the `yarn install` step, it's likely that you will need to install some additional dependencies which are used to configure `isolated-vm`. You can find out more in their [requirements section](https://github.com/laverdet/isolated-vm#requirements), and then run `yarn install` manually again after you've completed those steps. +1. Type the following command to install the Backstage application. -::: +```bash + npx @backstage/create-app@latest +``` -## 2. Run the Backstage app +2. If this is the first time that you are installing a Backstage application on this device, the following question is displayed. Enter `y` and select `Enter` to proceed with the installation. + +``` + Need to install the following packages: + @backstage/create-app@0.7.4 + ok to proceed? (y) +``` + +3. Enter the name for your application and select `Enter`. This is the root directory of your application. In this example, the name is set to `my-backstage-app`. + + ![create app](../assets/getting-started/create-app-output.png) Your Backstage app is fully installed and ready to be run! Now that the installation is complete, you can go to the application directory and start the app using the `yarn start` command. The `yarn start` command will run both the frontend and backend as separate processes (named `[0]` and `[1]`) in the same window. -```bash -cd my-backstage-app # your app name -yarn start +To run the application: + +1. Change to the root directory of your Backstage app. This is the same as the name of your application that you provided during the installation. In this example, it is `my-backstage-app`. + + ```bash + cd my-backstage-app + ``` + +2. Start the Backstage application. + + ```bash + yarn start + ``` + +As the frontend and backend are starting, you will see output similar to the following. The output shows that the app and backend are starting up with the configuration coming from `app-config.yaml`. You will see the plugins being initialized, and authorization and permissions being setup. In addition you will see a series of REST API calls for those plugins that use a service backend, such as the service catalog. + +``` +Starting app, backend +Loaded config from app-config.yaml +. +. +2025-10-15T12:26:41.564Z backstage info Plugin initialization started: 'app', 'proxy', 'scaffolder', 'techdocs', 'auth', 'catalog', 'permission', 'search', 'kubernetes', 'notifications', 'signals' type="initialization" +Rspack compiled successfully +. +. +2025-10-15T15:17:21.130Z auth info Created new signing key eec1a9e4-4395-4698-9a9f-f1b5cbcf152b component="token-factory" +2025-10-15T15:17:21.139Z auth info Issuing token for user:development/guest, with entities user:development/guest component="token-factory" +2025-10-15T15:17:21.223Z rootHttpRouter info [2025-10-15T15:17:21.223Z] "GET /api/auth/guest/refresh HTTP/1.1" 200 802 "http://localhost:3000/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:143.0) Gecko/20100101 Firefox/143.0" type="incomingRequest" date="2025-10-15T15:17:21.223Z" method="GET" url="/api/auth/guest/refresh" status=200 httpVersion="1.1" userAgent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:143.0) Gecko/20100101 Firefox/143.0" contentLength=802 referrer="http://localhost:3000/" +. +. +2025-10-15T15:17:24.051Z rootHttpRouter info [2025-10-15T15:17:24.051Z] "GET /api/catalog/entities?fields=metadata,kind,spec.profile&filter=kind%3Dgroup%2Crelations.hasMember%3Duser%3Adevelopment%2Fguest HTTP/1.1" 304 0 "http://localhost:3000/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:143.0) Gecko/20100101 Firefox/143.0" type="incomingRequest" date="2025-10-15T15:17:24.051Z" method="GET" url="/api/catalog/entities?fields=metadata,kind,spec.profile&filter=kind%3Dgroup%2Crelations.hasMember%3Duser%3Adevelopment%2Fguest" status=304 httpVersion="1.1" userAgent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:143.0) Gecko/20100101 Firefox/143.0" referrer="http://localhost:3000/" +. +. ``` -![Screenshot of the command output, with the message web pack compiled successfully](../assets/getting-started/startup.png) +Once the Backstage UI is displayed, you can start exploring the demo immediately. -Here again, there's a small wait for the frontend to start up. Once the frontend is built, your browser window should automatically open. +:::tip Browser window didn't open with yarn start -:::tip Browser window didn't open - -When you see the message `[0] webpack compiled successfully`, you can navigate directly to `http://localhost:3000` to see your Backstage app. +When you see the message `Rspack compiled successfully`, you can navigate directly to `http://localhost:3000` to see your Backstage app. ::: -You can start exploring the demo immediately. - ![Screenshot of the Backstage portal.](../assets/getting-started/portal.png) -## Recap - -This tutorial walked through how to deploy Backstage using the `npx @backstage/create-app@latest` command. That command created a new directory that holds your new Backstage app. That app is currently only configured for development purposes, as it is using an in-memory database and contains demo data. - ## Next steps Choose the correct next steps for your user role, if you're likely to be deploying and managing a Backstage instance for your organization, look through the [Admin](#admin) section. If you're likely to be developing on/for Backstage, take a look through the [Developer](#developer) section. ### Admin -- Deploying to production - +- Configuring Backstage - [Setting up authentication](./config/authentication.md) - [Configuring a database](./config/database.md) - - [Deploying with Docker](../deployment/docker.md) - - [Deploying with Kubernetes](../deployment/k8s.md) - -- Configuring Backstage - - [Adding plugins](./configure-app-with-plugins.md) - [Customizing Your App's UI](../conf/user-interface/index.md) - [Populating the homepage](./homepage.md) +- Deploying to production + - [Deploying with Docker](../deployment/docker.md) + - [Deploying with Kubernetes](../deployment/k8s.md) ### Developer @@ -171,8 +191,4 @@ Share your experiences, comments, or suggestions with us: [on discord](https://discord.gg/backstage-687207715902193673), file issues for any [feature](https://github.com/backstage/backstage/issues/new?labels=help+wanted&template=feature_template.md) or -[plugin suggestions](https://github.com/backstage/community-plugins/issues/new/choose), -or -[bugs](https://github.com/backstage/backstage/issues/new?labels=bug&template=bug_template.md) -you have, and feel free to -[contribute](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md)! +[plugin suggestions](https://github.com/backstage/community-plugins/issues/new/choose) diff --git a/docs/plugins/existing-plugins.md b/docs/plugins/existing-plugins.md deleted file mode 100644 index 181650adc1..0000000000 --- a/docs/plugins/existing-plugins.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -id: existing-plugins -title: Existing plugins -description: Lists of existing open source plugins ---- - -## The Plugin Directory - -Open source plugins that you can add to your Backstage deployment can be found -at: - -https://backstage.io/plugins - -![](https://backstage.io/blog/assets/marketplace.png) - -## Links - -- [[blog] The Plugin Directory is open](https://backstage.io/blog/2020/09/30/plugin-marketplace) diff --git a/docs/plugins/index.md b/docs/plugins/index.md index f709afa894..ef45152f55 100644 --- a/docs/plugins/index.md +++ b/docs/plugins/index.md @@ -23,3 +23,9 @@ This approach is equally beneficial if you conceive an idea for a potentially im ## Integration with the Software Catalog Should your plugin complement the Software Catalog rather than exist as a standalone feature (for instance, as an additional tab or a card within an "Overview" tab), you'll find comprehensive guidance on achieving this integration in the [Integrating Plugin into Software Catalog guide](integrating-plugin-into-software-catalog.md). + +## Existing Plugins + +There are a plethora of existing community made plugins which can be found by going to the [Backstage Plugin Directory](https://backstage.io/plugins) + +You can read more about it in this blog post: [The Plugin Directory is now open](https://backstage.io/blog/2020/09/30/plugin-marketplace/) diff --git a/docs/plugins/testing.md b/docs/plugins/testing.md index 7292ac9754..1297d516f3 100644 --- a/docs/plugins/testing.md +++ b/docs/plugins/testing.md @@ -4,6 +4,12 @@ title: Testing with Jest description: Documentation on How to do unit testing with Jest --- +:::note Note + +You may want to consider migrating to Jest 30, to do this, you can follow this guide: [Migrating to Jest 30](../tutorials/jest30-migration.md) + +::: + Backstage uses [Jest](https://facebook.github.io/jest/) for all our unit testing needs. @@ -185,6 +191,11 @@ loading is broken, not that the loading indicator is broken. ## Examples +For more specific examples of how to test your Backstage **backend plugins** and **modules** or **frontend plugins** you can check out the following guides: + +- [Testing Backend Plugins and Modules](../backend-system/building-plugins-and-modules/02-testing.md) +- [Testing Frontend Plugins](../frontend-system/building-plugins/02-testing.md) + ### Utility Functions A utility function is a function with no side effects. It takes in arguments and diff --git a/docs/releases/v1.47.0-next.0-changelog.md b/docs/releases/v1.47.0-next.0-changelog.md new file mode 100644 index 0000000000..e1fd3f9ebb --- /dev/null +++ b/docs/releases/v1.47.0-next.0-changelog.md @@ -0,0 +1,578 @@ +# Release v1.47.0-next.0 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.47.0-next.0](https://backstage.github.io/upgrade-helper/?to=1.47.0-next.0) + +## @backstage/ui@0.11.0-next.0 + +### Minor Changes + +- 4ea1d15: **BREAKING**: Renamed CSS variable `--bui-bg` to `--bui-bg-surface-0` for consistency. + +### Patch Changes + +- 1880402: Fixes app background color on dark mode. +- 9c76682: build(deps-dev): bump `storybook` from 10.1.9 to 10.1.10 +- b4a4911: Fixed SearchField `startCollapsed` prop not working correctly in Backstage UI. The field now properly starts in a collapsed state, expands when clicked and focused, and collapses back when unfocused with no input. Also fixed CSS logic to work correctly in all layout contexts (flex row, flex column, and regular containers). + + Affected components: SearchField + +## @backstage/backend-defaults@0.14.1-next.0 + +### Patch Changes + +- 7126bf2: Fixed a spelling mistake in root health service shutdown response. +- Updated dependencies + - @backstage/backend-app-api@1.4.0 + - @backstage/backend-dev-utils@0.1.6 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/cli-node@0.2.16 + - @backstage/config@1.3.6 + - @backstage/config-loader@1.10.7 + - @backstage/errors@1.2.7 + - @backstage/integration@1.19.0 + - @backstage/integration-aws-node@0.1.19 + - @backstage/types@1.2.2 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-node@0.10.7 + +## @backstage/backend-dynamic-feature-service@0.7.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/cli-common@0.1.16 + - @backstage/cli-node@0.2.16 + - @backstage/config@1.3.6 + - @backstage/config-loader@1.10.7 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-app-node@0.1.40 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-catalog-backend@3.3.1-next.0 + - @backstage/plugin-events-backend@0.5.10-next.0 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + - @backstage/plugin-scaffolder-node@0.12.2 + - @backstage/plugin-search-backend-node@1.4.0 + - @backstage/plugin-search-common@1.2.21 + +## @backstage/backend-openapi-utils@0.6.5-next.0 + +### Patch Changes + +- 6678b78: Internal update to use native feature from our request validation library for handling base path determination. +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + +## @backstage/backend-test-utils@1.10.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-app-api@1.4.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-common@0.9.3 + +## @backstage/cli@0.35.2-next.0 + +### Patch Changes + +- 320c6a9: Bump `@swc/core` to support `ES2023` and `ES2024` +- 9ee5996: Bump minimum required `@swc/core` to avoid transpilation bug +- Updated dependencies + - @backstage/catalog-model@1.7.6 + - @backstage/cli-common@0.1.16 + - @backstage/cli-node@0.2.16 + - @backstage/config@1.3.6 + - @backstage/config-loader@1.10.7 + - @backstage/errors@1.2.7 + - @backstage/eslint-plugin@0.2.0 + - @backstage/integration@1.19.0 + - @backstage/release-manifests@0.0.13 + - @backstage/types@1.2.2 + +## @backstage/create-app@0.7.8-next.0 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.16 + +## @backstage/dev-utils@1.1.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/app-defaults@1.7.3 + - @backstage/catalog-model@1.7.6 + - @backstage/core-app-api@1.19.3 + - @backstage/core-components@0.18.4 + - @backstage/core-plugin-api@1.12.1 + - @backstage/integration-react@1.2.13 + - @backstage/theme@0.7.1 + - @backstage/plugin-catalog-react@1.21.4 + +## @techdocs/cli@1.10.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/catalog-model@1.7.6 + - @backstage/cli-common@0.1.16 + - @backstage/config@1.3.6 + - @backstage/plugin-techdocs-node@1.13.10 + +## @backstage/plugin-app-visualizer@0.1.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/core-components@0.18.4 + - @backstage/core-plugin-api@1.12.1 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.4.11-next.0 + +### Patch Changes + +- e54fcb2: Added support for custom start URL search parameters (with the new `startUrlSearchParams` config property) +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/config@1.3.6 + - @backstage/types@1.2.2 + - @backstage/plugin-auth-backend@0.25.7 + - @backstage/plugin-auth-node@0.6.10 + +## @backstage/plugin-catalog-backend@3.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-client@1.12.1 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/integration@1.19.0 + - @backstage/types@1.2.2 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + +## @backstage/plugin-catalog-backend-module-aws@0.4.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/integration@1.19.0 + - @backstage/integration-aws-node@0.1.19 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-kubernetes-common@0.9.9 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.5.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/plugin-catalog-node@1.20.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.7.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/integration@1.19.0 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-events-node@0.4.18 + +## @backstage/plugin-catalog-backend-module-gitlab-org@0.2.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/plugin-catalog-backend-module-gitlab@0.7.7-next.0 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-events-node@0.4.18 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.7.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-catalog-backend@3.3.1-next.0 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-common@0.9.3 + +## @backstage/plugin-catalog-backend-module-logs@0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/plugin-catalog-backend@3.3.1-next.0 + - @backstage/plugin-events-node@0.4.18 + +## @backstage/plugin-devtools-backend@0.5.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/cli-common@0.1.16 + - @backstage/config@1.3.6 + - @backstage/config-loader@1.10.7 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-devtools-common@0.1.20 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + +## @backstage/plugin-events-backend@0.5.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-events-node@0.4.18 + +## @backstage/plugin-mcp-actions-backend@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-client@1.12.1 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-catalog-node@1.20.1 + +## @backstage/plugin-mui-to-bui@0.2.3-next.0 + +### Patch Changes + +- e4a1180: Updated tokens from `--bui-bg` to `--bui-bg-surface-0` +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/core-plugin-api@1.12.1 + - @backstage/frontend-plugin-api@0.13.2 + - @backstage/theme@0.7.1 + +## @backstage/plugin-scaffolder-backend@3.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/integration@1.19.0 + - @backstage/types@1.2.2 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-bitbucket-cloud-common@0.3.5 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.15 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + - @backstage/plugin-scaffolder-backend-module-azure@0.2.16 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.17 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.3.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.16 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.2.16 + - @backstage/plugin-scaffolder-backend-module-gitea@0.2.16 + - @backstage/plugin-scaffolder-backend-module-github@0.9.3 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.11.0 + - @backstage/plugin-scaffolder-common@1.7.4 + - @backstage/plugin-scaffolder-node@0.12.2 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.3.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/integration@1.19.0 + - @backstage/types@1.2.2 + - @backstage/plugin-scaffolder-node@0.12.2 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.4.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/types@1.2.2 + - @backstage/plugin-scaffolder-node@0.12.2 + - @backstage/plugin-scaffolder-node-test-utils@0.3.7-next.0 + +## @backstage/plugin-scaffolder-node-test-utils@0.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/backend-test-utils@1.10.3-next.0 + - @backstage/types@1.2.2 + - @backstage/plugin-scaffolder-node@0.12.2 + +## @backstage/plugin-search-backend@2.0.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + - @backstage/plugin-search-backend-node@1.4.0 + - @backstage/plugin-search-common@1.2.21 + +## @backstage/plugin-techdocs-backend@2.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-client@1.12.1 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/integration@1.19.0 + - @backstage/types@1.2.2 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-techdocs-node@1.13.10 + +## @backstage/plugin-user-settings-backend@0.3.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-signals-node@0.1.27 + - @backstage/plugin-user-settings-common@0.0.1 + +## example-app@0.2.117-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/cli@0.35.2-next.0 + - @backstage/plugin-mui-to-bui@0.2.3-next.0 + - @backstage/app-defaults@1.7.3 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/core-app-api@1.19.3 + - @backstage/core-components@0.18.4 + - @backstage/core-plugin-api@1.12.1 + - @backstage/frontend-app-api@0.13.3 + - @backstage/integration-react@1.2.13 + - @backstage/theme@0.7.1 + - @backstage/plugin-api-docs@0.13.2 + - @backstage/plugin-auth-react@0.1.22 + - @backstage/plugin-catalog@1.32.1 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-graph@0.5.4 + - @backstage/plugin-catalog-import@0.13.8 + - @backstage/plugin-catalog-react@1.21.4 + - @backstage/plugin-catalog-unprocessed-entities@0.2.24 + - @backstage/plugin-devtools@0.1.34 + - @backstage/plugin-home@0.8.15 + - @backstage/plugin-kubernetes@0.12.14 + - @backstage/plugin-kubernetes-cluster@0.0.32 + - @backstage/plugin-notifications@0.5.12 + - @backstage/plugin-org@0.6.47 + - @backstage/plugin-permission-react@0.4.39 + - @backstage/plugin-scaffolder@1.35.0 + - @backstage/plugin-scaffolder-react@1.19.4 + - @backstage/plugin-search@1.5.1 + - @backstage/plugin-search-common@1.2.21 + - @backstage/plugin-search-react@1.10.1 + - @backstage/plugin-signals@0.0.26 + - @backstage/plugin-techdocs@1.16.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.31 + - @backstage/plugin-techdocs-react@1.3.6 + - @backstage/plugin-user-settings@0.8.30 + +## example-app-next@0.0.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/cli@0.35.2-next.0 + - @backstage/plugin-app-visualizer@0.1.27-next.0 + - @backstage/app-defaults@1.7.3 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/core-app-api@1.19.3 + - @backstage/core-compat-api@0.5.5 + - @backstage/core-components@0.18.4 + - @backstage/core-plugin-api@1.12.1 + - @backstage/frontend-app-api@0.13.3 + - @backstage/frontend-defaults@0.3.4 + - @backstage/frontend-plugin-api@0.13.2 + - @backstage/integration-react@1.2.13 + - @backstage/theme@0.7.1 + - @backstage/plugin-api-docs@0.13.2 + - @backstage/plugin-app@0.3.3 + - @backstage/plugin-auth@0.1.3 + - @backstage/plugin-auth-react@0.1.22 + - @backstage/plugin-catalog@1.32.1 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-graph@0.5.4 + - @backstage/plugin-catalog-import@0.13.8 + - @backstage/plugin-catalog-react@1.21.4 + - @backstage/plugin-catalog-unprocessed-entities@0.2.24 + - @backstage/plugin-home@0.8.15 + - @backstage/plugin-kubernetes@0.12.14 + - @backstage/plugin-kubernetes-cluster@0.0.32 + - @backstage/plugin-notifications@0.5.12 + - @backstage/plugin-org@0.6.47 + - @backstage/plugin-permission-react@0.4.39 + - @backstage/plugin-scaffolder@1.35.0 + - @backstage/plugin-scaffolder-react@1.19.4 + - @backstage/plugin-search@1.5.1 + - @backstage/plugin-search-common@1.2.21 + - @backstage/plugin-search-react@1.10.1 + - @backstage/plugin-signals@0.0.26 + - @backstage/plugin-techdocs@1.16.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.31 + - @backstage/plugin-techdocs-react@1.3.6 + - @backstage/plugin-user-settings@0.8.30 + +## example-backend@0.0.46-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/plugin-app-backend@0.5.9 + - @backstage/plugin-auth-backend@0.25.7 + - @backstage/plugin-auth-backend-module-github-provider@0.4.0 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.15 + - @backstage/plugin-auth-backend-module-openshift-provider@0.1.3 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-catalog-backend@3.3.1-next.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.5.10-next.0 + - @backstage/plugin-catalog-backend-module-openapi@0.2.17 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.15 + - @backstage/plugin-catalog-backend-module-unprocessed@0.6.7 + - @backstage/plugin-devtools-backend@0.5.13-next.0 + - @backstage/plugin-events-backend@0.5.10-next.0 + - @backstage/plugin-events-backend-module-google-pubsub@0.1.7 + - @backstage/plugin-kubernetes-backend@0.21.0 + - @backstage/plugin-mcp-actions-backend@0.1.7-next.0 + - @backstage/plugin-notifications-backend@0.6.1 + - @backstage/plugin-permission-backend@0.7.7 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.15 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + - @backstage/plugin-proxy-backend@0.6.9 + - @backstage/plugin-scaffolder-backend@3.1.1-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.9.3 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.17 + - @backstage/plugin-search-backend@2.0.10-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.11 + - @backstage/plugin-search-backend-module-elasticsearch@1.7.9 + - @backstage/plugin-search-backend-module-explore@0.3.10 + - @backstage/plugin-search-backend-module-techdocs@0.4.9 + - @backstage/plugin-search-backend-node@1.4.0 + - @backstage/plugin-signals-backend@0.3.11 + - @backstage/plugin-techdocs-backend@2.1.4-next.0 + +## e2e-test@0.2.36-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.7.8-next.0 + - @backstage/cli-common@0.1.16 + - @backstage/errors@1.2.7 + +## techdocs-cli-embedded-app@0.2.116-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/cli@0.35.2-next.0 + - @backstage/app-defaults@1.7.3 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/core-app-api@1.19.3 + - @backstage/core-components@0.18.4 + - @backstage/core-plugin-api@1.12.1 + - @backstage/integration-react@1.2.13 + - @backstage/test-utils@1.7.14 + - @backstage/theme@0.7.1 + - @backstage/plugin-catalog@1.32.1 + - @backstage/plugin-techdocs@1.16.1 + - @backstage/plugin-techdocs-react@1.3.6 diff --git a/docs/releases/v1.47.0-next.1-changelog.md b/docs/releases/v1.47.0-next.1-changelog.md new file mode 100644 index 0000000000..5c93c23480 --- /dev/null +++ b/docs/releases/v1.47.0-next.1-changelog.md @@ -0,0 +1,648 @@ +# Release v1.47.0-next.1 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.47.0-next.1](https://backstage.github.io/upgrade-helper/?to=1.47.0-next.1) + +## @backstage/backend-defaults@0.14.1-next.1 + +### Patch Changes + +- 3afeab4: Implementing `readTree` for `GoogleGcsReader` +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/backend-dynamic-feature-service@0.7.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/plugin-catalog-backend@3.3.1-next.1 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/cli@0.35.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/core-compat-api@0.5.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/create-app@0.7.8-next.1 + +### Patch Changes + +- Bumped create-app version. + +## @backstage/dev-utils@1.1.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + +## @backstage/frontend-app-api@0.13.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-defaults@0.3.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/frontend-defaults@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-app@0.3.4-next.0 + - @backstage/frontend-app-api@0.13.4-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/frontend-test-utils@0.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-app@0.3.4-next.0 + - @backstage/frontend-app-api@0.13.4-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/integration@1.19.2-next.0 + +### Patch Changes + +- 3afeab4: Implementing `ScmIntegration` for `GoogleGcs` +- 9083273: Rollback the lowercase replacing in GitHub integration config + +## @backstage/integration-react@1.2.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @techdocs/cli@1.10.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/plugin-techdocs-node@1.13.11-next.0 + +## @backstage/plugin-api-docs@0.13.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.32.2-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-app@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration-react@1.2.14-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-bitbucket-cloud-common@0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog@1.32.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-scaffolder-common@1.7.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/core-compat-api@0.5.6-next.0 + - @backstage/frontend-plugin-api@0.13.2 + - @backstage/plugin-search-react@1.10.1 + +## @backstage/plugin-catalog-backend@3.3.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog-backend-module-aws@0.4.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.3.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.5.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.3.6-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.5.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog-backend-module-gerrit@0.3.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog-backend-module-gitea@0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.12.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog-backend-module-github-org@0.3.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.12.1-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.7.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.2.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.7.5-next.0 + +## @backstage/plugin-catalog-graph@0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-catalog-import@0.13.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-catalog-react@1.21.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration-react@1.2.14-next.0 + - @backstage/frontend-test-utils@0.4.3-next.0 + - @backstage/core-compat-api@0.5.6-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-devtools@0.1.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-compat-api@0.5.6-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-events-backend-module-github@0.4.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-home@0.8.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-kubernetes@0.12.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-kubernetes-cluster@0.0.33-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + +## @backstage/plugin-org@0.6.48-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-org-react@0.1.46-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + +## @backstage/plugin-scaffolder@1.35.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-scaffolder-common@1.7.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/plugin-scaffolder-react@1.19.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-scaffolder-backend@3.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.3.6-next.0 + - @backstage/plugin-scaffolder-backend-module-azure@0.2.17-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.18-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.3.1-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.17-next.0 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.2.17-next.0 + - @backstage/plugin-scaffolder-backend-module-gitea@0.2.17-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.9.4-next.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.11.1-next.0 + - @backstage/plugin-scaffolder-common@1.7.5-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.16-next.0 + +## @backstage/plugin-scaffolder-backend-module-azure@0.2.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.3.1-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.17-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.3.6-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.3.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-gcp@0.2.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.2.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-gitea@0.2.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-github@0.9.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.11.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-notifications@0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.5.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.2.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.4.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + - @backstage/plugin-scaffolder-node-test-utils@0.3.7-next.1 + +## @backstage/plugin-scaffolder-common@1.7.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-scaffolder-node@0.12.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-scaffolder-common@1.7.5-next.0 + +## @backstage/plugin-scaffolder-node-test-utils@0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## @backstage/plugin-scaffolder-react@1.19.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.7.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-search@1.5.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + - @backstage/plugin-search-react@1.10.1 + +## @backstage/plugin-search-backend-module-techdocs@0.4.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs-node@1.13.11-next.0 + +## @backstage/plugin-techdocs@1.16.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + - @backstage/plugin-search-react@1.10.1 + +## @backstage/plugin-techdocs-addons-test-utils@2.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-techdocs@1.16.2-next.0 + - @backstage/plugin-catalog@1.32.2-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/plugin-search-react@1.10.1 + +## @backstage/plugin-techdocs-backend@2.1.4-next.1 + +### Patch Changes + +- b6ff2a5: Some AWS `publisher` config options such as `region`, `endpoint`, `accountId` are now marked as `@visibility backend` instead of `secret`. +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-techdocs-node@1.13.11-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## @backstage/plugin-techdocs-node@1.13.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## @backstage/plugin-user-settings@0.8.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## example-app@0.2.117-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-import@0.13.9-next.0 + - @backstage/plugin-scaffolder@1.35.1-next.0 + - @backstage/plugin-techdocs@1.16.2-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.0 + - @backstage/plugin-catalog@1.32.2-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/plugin-scaffolder-react@1.19.5-next.0 + - @backstage/frontend-app-api@0.13.4-next.0 + - @backstage/plugin-api-docs@0.13.3-next.0 + - @backstage/plugin-catalog-graph@0.5.5-next.0 + - @backstage/plugin-org@0.6.48-next.0 + - @backstage/plugin-user-settings@0.8.31-next.0 + - @backstage/plugin-home@0.8.16-next.0 + - @backstage/plugin-kubernetes@0.12.15-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.33-next.0 + - @backstage/plugin-search@1.5.2-next.0 + - @backstage/plugin-search-react@1.10.1 + - @backstage/plugin-devtools@0.1.35-next.0 + +## example-app-next@0.0.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-import@0.13.9-next.0 + - @backstage/plugin-scaffolder@1.35.1-next.0 + - @backstage/plugin-techdocs@1.16.2-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.0 + - @backstage/plugin-app@0.3.4-next.0 + - @backstage/plugin-catalog@1.32.2-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/plugin-scaffolder-react@1.19.5-next.0 + - @backstage/frontend-app-api@0.13.4-next.0 + - @backstage/frontend-defaults@0.3.5-next.0 + - @backstage/core-compat-api@0.5.6-next.0 + - @backstage/plugin-api-docs@0.13.3-next.0 + - @backstage/plugin-catalog-graph@0.5.5-next.0 + - @backstage/plugin-org@0.6.48-next.0 + - @backstage/plugin-user-settings@0.8.31-next.0 + - @backstage/plugin-home@0.8.16-next.0 + - @backstage/plugin-kubernetes@0.12.15-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.33-next.0 + - @backstage/plugin-search@1.5.2-next.0 + - @backstage/plugin-app-visualizer@0.1.27-next.0 + - @backstage/plugin-auth@0.1.3 + - @backstage/frontend-plugin-api@0.13.2 + - @backstage/plugin-search-react@1.10.1 + +## example-backend@0.0.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/plugin-techdocs-backend@2.1.4-next.1 + - @backstage/plugin-catalog-backend@3.3.1-next.1 + - @backstage/plugin-catalog-backend-module-openapi@0.2.18-next.0 + - @backstage/plugin-scaffolder-backend@3.1.1-next.1 + - @backstage/plugin-scaffolder-backend-module-github@0.9.4-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.16-next.0 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.18-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.4.10-next.0 + +## @internal/scaffolder@0.0.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.19.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + +## techdocs-cli-embedded-app@0.2.116-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-techdocs@1.16.2-next.0 + - @backstage/plugin-catalog@1.32.2-next.0 diff --git a/docs/releases/v1.47.0-next.2-changelog.md b/docs/releases/v1.47.0-next.2-changelog.md new file mode 100644 index 0000000000..443a981de0 --- /dev/null +++ b/docs/releases/v1.47.0-next.2-changelog.md @@ -0,0 +1,385 @@ +# Release v1.47.0-next.2 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.47.0-next.2](https://backstage.github.io/upgrade-helper/?to=1.47.0-next.2) + +## @backstage/app-defaults@1.7.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/core-components@0.18.5-next.0 + +### Patch Changes + +- a723b8a: The MarkdownContent component now handles HTML content the same way as GitHub when rendering GitHub-flavored Markdown + +## @backstage/create-app@0.7.8-next.2 + +### Patch Changes + +- f1fe6fe: Updated Dockerfile to use Node 24 and Debian Trixie + +## @backstage/dev-utils@1.1.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/app-defaults@1.7.4-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## @backstage/frontend-defaults@0.3.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-app@0.3.4-next.1 + +## @backstage/plugin-api-docs@0.13.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog@1.32.2-next.1 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## @backstage/plugin-app@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + +## @backstage/plugin-app-visualizer@0.1.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-auth@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-auth-react@0.1.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-catalog@1.32.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-search-react@1.10.2-next.0 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + +## @backstage/plugin-catalog-graph@0.5.5-next.1 + +### Patch Changes + +- 5c49a00: Update for the `qs` library bump: the old array limit setting has changed to be more strict; you can no longer just give a zero to mean unlimited. So we choose an arbitrary high value, to at least go higher than the default 20. +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## @backstage/plugin-catalog-import@0.13.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## @backstage/plugin-catalog-react@1.21.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + +## @backstage/plugin-catalog-unprocessed-entities@0.2.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-config-schema@0.1.76-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-devtools@0.1.35-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-home@0.8.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-home-react@0.1.34-next.0 + +## @backstage/plugin-home-react@0.1.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-kubernetes@0.12.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-kubernetes-react@0.5.15-next.0 + +## @backstage/plugin-kubernetes-cluster@0.0.33-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-kubernetes-react@0.5.15-next.0 + +## @backstage/plugin-kubernetes-react@0.5.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-notifications@0.5.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-org@0.6.48-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## @backstage/plugin-org-react@0.1.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## @backstage/plugin-scaffolder@1.35.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-scaffolder-react@1.19.5-next.1 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + +## @backstage/plugin-scaffolder-react@1.19.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## @backstage/plugin-search@1.5.2-next.1 + +### Patch Changes + +- 5c49a00: Update for the `qs` library bump: the old array limit setting has changed to be more strict; you can no longer just give a zero to mean unlimited. So we choose an arbitrary high value, to at least go higher than the default 20. +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-search-react@1.10.2-next.0 + +## @backstage/plugin-search-react@1.10.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-signals@0.0.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-techdocs@1.16.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-auth-react@0.1.23-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-search-react@1.10.2-next.0 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + +## @backstage/plugin-techdocs-addons-test-utils@2.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog@1.32.2-next.1 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-search-react@1.10.2-next.0 + - @backstage/plugin-techdocs@1.16.2-next.1 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + +## @backstage/plugin-techdocs-react@1.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## @backstage/plugin-user-settings@0.8.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## example-app@0.2.117-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-graph@0.5.5-next.1 + - @backstage/plugin-search@1.5.2-next.1 + - @backstage/app-defaults@1.7.4-next.0 + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-api-docs@0.13.3-next.1 + - @backstage/plugin-auth-react@0.1.23-next.0 + - @backstage/plugin-catalog@1.32.2-next.1 + - @backstage/plugin-catalog-import@0.13.9-next.1 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.2.25-next.0 + - @backstage/plugin-devtools@0.1.35-next.1 + - @backstage/plugin-home@0.8.16-next.1 + - @backstage/plugin-kubernetes@0.12.15-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.33-next.1 + - @backstage/plugin-notifications@0.5.13-next.0 + - @backstage/plugin-org@0.6.48-next.1 + - @backstage/plugin-scaffolder@1.35.1-next.1 + - @backstage/plugin-scaffolder-react@1.19.5-next.1 + - @backstage/plugin-search-react@1.10.2-next.0 + - @backstage/plugin-signals@0.0.27-next.0 + - @backstage/plugin-techdocs@1.16.2-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.1 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + - @backstage/plugin-user-settings@0.8.31-next.1 + +## example-app-next@0.0.31-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-graph@0.5.5-next.1 + - @backstage/plugin-search@1.5.2-next.1 + - @backstage/app-defaults@1.7.4-next.0 + - @backstage/cli@0.35.2-next.1 + - @backstage/frontend-defaults@0.3.5-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-api-docs@0.13.3-next.1 + - @backstage/plugin-app@0.3.4-next.1 + - @backstage/plugin-app-visualizer@0.1.27-next.1 + - @backstage/plugin-auth@0.1.4-next.0 + - @backstage/plugin-auth-react@0.1.23-next.0 + - @backstage/plugin-catalog@1.32.2-next.1 + - @backstage/plugin-catalog-import@0.13.9-next.1 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.2.25-next.0 + - @backstage/plugin-home@0.8.16-next.1 + - @backstage/plugin-kubernetes@0.12.15-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.33-next.1 + - @backstage/plugin-notifications@0.5.13-next.0 + - @backstage/plugin-org@0.6.48-next.1 + - @backstage/plugin-scaffolder@1.35.1-next.1 + - @backstage/plugin-scaffolder-react@1.19.5-next.1 + - @backstage/plugin-search-react@1.10.2-next.0 + - @backstage/plugin-signals@0.0.27-next.0 + - @backstage/plugin-techdocs@1.16.2-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.1 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + - @backstage/plugin-user-settings@0.8.31-next.1 + +## app-next-example-plugin@0.0.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## techdocs-cli-embedded-app@0.2.116-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/app-defaults@1.7.4-next.0 + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog@1.32.2-next.1 + - @backstage/plugin-techdocs@1.16.2-next.1 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + +## @internal/plugin-todo-list@1.0.47-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 diff --git a/docs/tooling/cli/02-build-system.md b/docs/tooling/cli/02-build-system.md index 6f1b7fd54a..c896aa1399 100644 --- a/docs/tooling/cli/02-build-system.md +++ b/docs/tooling/cli/02-build-system.md @@ -417,7 +417,7 @@ The following is an example of a `Dockerfile` that can be used to package the output of building a package with role `'backend'` into an image: ```Dockerfile -FROM node:20-bookworm-slim +FROM node:24-trixie-slim WORKDIR /app COPY yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ diff --git a/microsite/blog/2025-12-30-backstage-wrapped-2025.mdx b/microsite/blog/2025-12-30-backstage-wrapped-2025.mdx new file mode 100644 index 0000000000..0f8bdd21cf --- /dev/null +++ b/microsite/blog/2025-12-30-backstage-wrapped-2025.mdx @@ -0,0 +1,115 @@ +--- +title: 'Backstage Wrapped 2025: Celebrating a mature framework with modern foundations' +author: Vincenzo Scamporlino, Spotify +authorURL: https://github.com/vinzscam +authorImageURL: https://avatars.githubusercontent.com/u/8433119?v=8 +--- + +![Let's blast into the New Year with a quick look back at all the big hits — backend, frontend, AI, UI, and more! See how today's Backstage is ready to build the future of developer experience.](assets/2025-12-30/wrapped2025.png) + +This year was another big one for Backstage and our worldwide community of adopters, contributors, and partners. Backstage turned five, the New Frontend System became adoption-ready, and your favorite platform for developer experience gained AI superpowers with the introduction of the Actions Registry and MCP server support. Let's blast into the New Year with a quick look back, along with a peek around the corner at what's coming next. + +{/* truncate */} + +--- + +## Busy beavers here, there, and everywhere + +As in years past, we've visualized how our vibrant global community lights up the Backstage open source repo with enthusiasm, creativity, and commits. This year, we're visualizing contributions to the Community Plugins repo, too. Can you spot your name in the videos below? + + + +_All 7.7k commits to `backstage/backstage` in 2025_ + + + +_All 3.3k commits to `backstage/community-plugins` in 2025_ + +Couldn't spot your name in the videos? Here's one more chance — every contributor who helped shape Backstage in 2025, all in one picture. + +![Backstage 2025 contributors](assets/2025-12-30/contributors-wrapped-2025.png) + +## Mature for a five-year-old + +![Backstage community stats: 3.4k+ adopters, 1,8k contributors, 15k Discord members, 7k project forks, 68k total contributions, 250+ open source plugins, 31k stars](assets/2025-12-30/wrapped2025-stats.png) +_The growing Backstage ecosystem, by the numbers_ + +Earlier this year, the Backstage project [celebrated its 5th birthday][bday] on the main stage at [KubeCon + CloudNativeCon in London][kcon-eu]. + +While the framework still isn't old enough to shave, it's matured into the industry standard for internal developer portals (IDPs). According to [this DX survey][dx] released in March: + +> Backstage is dominating the IDP market, holding an impressive 89% market share compared to SaaS competitors and achieving a remarkable 67% overall market penetration. These percentages are even higher for enterprise companies. + +As you can see above in the [latest project stats][video], the Backstage ecosystem continues to expand, growing in adopters and contributors, as well as plugins and third-party service providers. + +Want to dive into more Backstage stats? Check out the project's health scores and more on the relaunched [LFX Insights][lfx] site. + +[bday]: https://www.youtube.com/watch?v=JqG1wey7-Ao&t=563s&list=PL8iP9yIjU0Q3K8LV_a9CcFmhvvNTAUzL1 +[kcon-eu]: https://backstage.io/blog/2025/04/29/backstagecon-kubecon-25-london#big-birthday-energy-on-the-big-stage +[dx]: https://newsletter.getdx.com/p/backstage-and-the-developer-portal-market +[video]: https://www.youtube.com/watch?v=Wih0a1v1Et0&list=PL8iP9yIjU0Q33vpSaBlAvIhgDb-9smXUU +[lfx]: https://insights.linuxfoundation.org/project/backstage + +## Building the future on modern foundations + +Just because Backstage has cemented its place as the standard for IDPs doesn't mean it's sitting still. From backend to frontend, from AI to UI, the technical foundations of the platform have been modernized, updated, and revamped — this is why today's Backstage is ready to build the future of developer experience. + +Top 2025 highlights: + +- Goodbye to the old backend system +- New Frontend System is adoption-ready +- Hello to the Actions Registry + MCP server support +- Introducing a new design system with Backstage UI + +With the [New Backend System][backend] released as a stable 1.0 last year and the [New Frontend System][frontend] becoming [adoption-ready][1-42] this year, Backstage is easier than ever to use, maintain, and build on — making it both more accessible and more capable for adopters, old and new. + +This year also saw the debut of the [Actions Registry][actions] and MCP server support — so now Backstage can empower both your human developers and their AI helpers. + +And [Backstage UI][ui] is coming! The alpha release of the upcoming design system made huge strides in 2025, preparing the way for a new level of usability throughout the Backstage experience. + +Catch up on a whole year's worth of improvements — and see where Backstage is heading next — in the recordings below. + +[backend]: https://backstage.io/docs/backend-system/ +[frontend]: https://backstage.io/docs/frontend-system/ +[1-42]: https://backstage.io/docs/releases/v1.42.0 +[actions]: https://backstage.io/docs/backend-system/core-services/actions-registry +[ui]: https://ui.backstage.io/ + + + +_Watch the Backstage maintainers' talk at [KubeCon in London][lon], where they demoed the New Frontend System and introduced the Actions Registry._ + + +_Watch the maintainers' talk at [KubeCon in Atlanta][atl], where they shared +work towards an AI-Native Backstage, progress on Backstage UI, and more._ + +[lon]: https://backstage.io/blog/2025/04/29/backstagecon-kubecon-25-london +[atl]: https://backstage.io/blog/2025/11/25/backstagecon-kubecon-25-atlanta + +## See you in 2026! + +Happy New Year, Backstage Community! See you in the repos! diff --git a/microsite/blog/assets/2025-12-30/contributors-wrapped-2025.png b/microsite/blog/assets/2025-12-30/contributors-wrapped-2025.png new file mode 100644 index 0000000000..7aa16f106e Binary files /dev/null and b/microsite/blog/assets/2025-12-30/contributors-wrapped-2025.png differ diff --git a/microsite/blog/assets/2025-12-30/wrapped2025-stats.png b/microsite/blog/assets/2025-12-30/wrapped2025-stats.png new file mode 100644 index 0000000000..59d31f142c Binary files /dev/null and b/microsite/blog/assets/2025-12-30/wrapped2025-stats.png differ diff --git a/microsite/blog/assets/2025-12-30/wrapped2025.png b/microsite/blog/assets/2025-12-30/wrapped2025.png new file mode 100644 index 0000000000..b99768dfda Binary files /dev/null and b/microsite/blog/assets/2025-12-30/wrapped2025.png differ diff --git a/microsite/docusaurus.config.ts b/microsite/docusaurus.config.ts index 850e6058af..a08f0085a5 100644 --- a/microsite/docusaurus.config.ts +++ b/microsite/docusaurus.config.ts @@ -273,6 +273,10 @@ const config: Config = { from: '/docs/getting-started/app-custom-theme', to: '/docs/conf/user-interface', }, + { + from: '/docs/plugins/existing-plugins', + to: '/docs/plugins/', + }, ], }), [ diff --git a/microsite/sidebars.ts b/microsite/sidebars.ts index afe5616bbf..fed5de8015 100644 --- a/microsite/sidebars.ts +++ b/microsite/sidebars.ts @@ -27,17 +27,17 @@ function sidebarElementWithIndex( }, children: Array, ) { - const { label, description, differentiator } = element; + const { label, description, differentiator = '' } = element; return { type: 'category', - label: label, + label, description, link: { type: 'generated-index', title: label, slug: `/${differentiator}${label .toLowerCase() - .replace(/[^a-z0-9 _-]/gi, '-')}/generated-index`, + .replace(/[^a-z0-9]/g, '-')}/generated-index`, }, items: children, }; @@ -397,7 +397,6 @@ export default { }, [ 'plugins/index', - 'plugins/existing-plugins', 'plugins/create-a-plugin', 'plugins/plugin-development', 'plugins/structure-of-a-plugin', diff --git a/mkdocs.yml b/mkdocs.yml index 45fdd2c9d6..c07ff5afc4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -135,7 +135,6 @@ nav: - Org Data: 'integrations/ldap/org.md' - Plugins: - Intro to plugins: 'plugins/index.md' - - Existing plugins: 'plugins/existing-plugins.md' - Create a Backstage Plugin: 'plugins/create-a-plugin.md' - Plugin Development: 'plugins/plugin-development.md' - Structure of a plugin: 'plugins/structure-of-a-plugin.md' diff --git a/package.json b/package.json index f39c8f1905..0e3b92380c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "1.46.0", + "version": "1.47.0-next.2", "backstage": { "cli": { "new": { @@ -134,6 +134,7 @@ "@backstage/eslint-plugin": "workspace:*", "@backstage/repo-tools": "workspace:*", "@changesets/cli": "^2.14.0", + "@jest/environment-jsdom-abstract": "^30", "@octokit/rest": "^19.0.3", "@playwright/test": "^1.32.3", "@spotify/eslint-plugin": "^15.0.0", @@ -145,12 +146,14 @@ "@storybook/react-vite": "^10.1.9", "@techdocs/cli": "workspace:*", "@types/cacheable-request": "^8.3.6", + "@types/jest": "^30", + "@types/jsdom": "^27", "@types/memjs": "^1.3.3", "@types/node": "^22.13.14", "@types/webpack": "^5.28.0", "array-to-table": "^1.0.1", "command-exists": "^1.2.9", - "cross-env": "^7.0.0", + "cross-env": "^10.0.0", "e2e-test": "workspace:*", "eslint": "^8.6.0", "eslint-plugin-notice": "^1.0.0", @@ -158,7 +161,9 @@ "eslint-plugin-testing-library": "^6.0.0", "fs-extra": "^11.2.0", "husky": "^9.0.0", + "jest": "^30", "js-yaml": "^4.1.1", + "jsdom": "^27", "lint-staged": "^15.0.0", "madge": "^8.0.0", "minimist": "^1.2.5", diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index cca956654d..fd5b7194e1 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/app-defaults +## 1.7.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + ## 1.7.3 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 878e5b505b..d8de99e055 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/app-defaults", - "version": "1.7.3", + "version": "1.7.4-next.0", "description": "Provides the default wiring of a Backstage App", "backstage": { "role": "web-library" diff --git a/packages/app-next-example-plugin/CHANGELOG.md b/packages/app-next-example-plugin/CHANGELOG.md index ee1e797be4..210d6ab2f4 100644 --- a/packages/app-next-example-plugin/CHANGELOG.md +++ b/packages/app-next-example-plugin/CHANGELOG.md @@ -1,5 +1,12 @@ # app-next-example-plugin +## 0.0.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + ## 0.0.30 ### Patch Changes diff --git a/packages/app-next-example-plugin/package.json b/packages/app-next-example-plugin/package.json index f632f00de8..57cd421565 100644 --- a/packages/app-next-example-plugin/package.json +++ b/packages/app-next-example-plugin/package.json @@ -1,6 +1,6 @@ { "name": "app-next-example-plugin", - "version": "0.0.30", + "version": "0.0.31-next.0", "description": "Backstage internal example plugin", "backstage": { "role": "frontend-plugin", diff --git a/packages/app-next/CHANGELOG.md b/packages/app-next/CHANGELOG.md index 8ae5c67cb7..320e3a5b29 100644 --- a/packages/app-next/CHANGELOG.md +++ b/packages/app-next/CHANGELOG.md @@ -1,5 +1,118 @@ # example-app-next +## 0.0.31-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-graph@0.5.5-next.1 + - @backstage/plugin-search@1.5.2-next.1 + - @backstage/app-defaults@1.7.4-next.0 + - @backstage/cli@0.35.2-next.1 + - @backstage/frontend-defaults@0.3.5-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-api-docs@0.13.3-next.1 + - @backstage/plugin-app@0.3.4-next.1 + - @backstage/plugin-app-visualizer@0.1.27-next.1 + - @backstage/plugin-auth@0.1.4-next.0 + - @backstage/plugin-auth-react@0.1.23-next.0 + - @backstage/plugin-catalog@1.32.2-next.1 + - @backstage/plugin-catalog-import@0.13.9-next.1 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.2.25-next.0 + - @backstage/plugin-home@0.8.16-next.1 + - @backstage/plugin-kubernetes@0.12.15-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.33-next.1 + - @backstage/plugin-notifications@0.5.13-next.0 + - @backstage/plugin-org@0.6.48-next.1 + - @backstage/plugin-scaffolder@1.35.1-next.1 + - @backstage/plugin-scaffolder-react@1.19.5-next.1 + - @backstage/plugin-search-react@1.10.2-next.0 + - @backstage/plugin-signals@0.0.27-next.0 + - @backstage/plugin-techdocs@1.16.2-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.1 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + - @backstage/plugin-user-settings@0.8.31-next.1 + +## 0.0.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-import@0.13.9-next.0 + - @backstage/plugin-scaffolder@1.35.1-next.0 + - @backstage/plugin-techdocs@1.16.2-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.0 + - @backstage/plugin-app@0.3.4-next.0 + - @backstage/plugin-catalog@1.32.2-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/plugin-scaffolder-react@1.19.5-next.0 + - @backstage/frontend-app-api@0.13.4-next.0 + - @backstage/frontend-defaults@0.3.5-next.0 + - @backstage/core-compat-api@0.5.6-next.0 + - @backstage/plugin-api-docs@0.13.3-next.0 + - @backstage/plugin-catalog-graph@0.5.5-next.0 + - @backstage/plugin-org@0.6.48-next.0 + - @backstage/plugin-user-settings@0.8.31-next.0 + - @backstage/plugin-home@0.8.16-next.0 + - @backstage/plugin-kubernetes@0.12.15-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.33-next.0 + - @backstage/plugin-search@1.5.2-next.0 + - @backstage/plugin-app-visualizer@0.1.27-next.0 + - @backstage/plugin-auth@0.1.3 + - @backstage/frontend-plugin-api@0.13.2 + - @backstage/plugin-search-react@1.10.1 + +## 0.0.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/cli@0.35.2-next.0 + - @backstage/plugin-app-visualizer@0.1.27-next.0 + - @backstage/app-defaults@1.7.3 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/core-app-api@1.19.3 + - @backstage/core-compat-api@0.5.5 + - @backstage/core-components@0.18.4 + - @backstage/core-plugin-api@1.12.1 + - @backstage/frontend-app-api@0.13.3 + - @backstage/frontend-defaults@0.3.4 + - @backstage/frontend-plugin-api@0.13.2 + - @backstage/integration-react@1.2.13 + - @backstage/theme@0.7.1 + - @backstage/plugin-api-docs@0.13.2 + - @backstage/plugin-app@0.3.3 + - @backstage/plugin-auth@0.1.3 + - @backstage/plugin-auth-react@0.1.22 + - @backstage/plugin-catalog@1.32.1 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-graph@0.5.4 + - @backstage/plugin-catalog-import@0.13.8 + - @backstage/plugin-catalog-react@1.21.4 + - @backstage/plugin-catalog-unprocessed-entities@0.2.24 + - @backstage/plugin-home@0.8.15 + - @backstage/plugin-kubernetes@0.12.14 + - @backstage/plugin-kubernetes-cluster@0.0.32 + - @backstage/plugin-notifications@0.5.12 + - @backstage/plugin-org@0.6.47 + - @backstage/plugin-permission-react@0.4.39 + - @backstage/plugin-scaffolder@1.35.0 + - @backstage/plugin-scaffolder-react@1.19.4 + - @backstage/plugin-search@1.5.1 + - @backstage/plugin-search-common@1.2.21 + - @backstage/plugin-search-react@1.10.1 + - @backstage/plugin-signals@0.0.26 + - @backstage/plugin-techdocs@1.16.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.31 + - @backstage/plugin-techdocs-react@1.3.6 + - @backstage/plugin-user-settings@0.8.30 + ## 0.0.30 ### Patch Changes diff --git a/packages/app-next/package.json b/packages/app-next/package.json index 1bb03fb1c5..aca8ad1719 100644 --- a/packages/app-next/package.json +++ b/packages/app-next/package.json @@ -1,6 +1,6 @@ { "name": "example-app-next", - "version": "0.0.30", + "version": "0.0.31-next.2", "backstage": { "role": "frontend" }, @@ -97,7 +97,7 @@ "@types/react": "*", "@types/react-dom": "*", "@types/zen-observable": "^0.8.0", - "cross-env": "^7.0.0" + "cross-env": "^10.0.0" }, "bundled": true } diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 4de0d448e0..a0f77df488 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,106 @@ # example-app +## 0.2.117-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-graph@0.5.5-next.1 + - @backstage/plugin-search@1.5.2-next.1 + - @backstage/app-defaults@1.7.4-next.0 + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-api-docs@0.13.3-next.1 + - @backstage/plugin-auth-react@0.1.23-next.0 + - @backstage/plugin-catalog@1.32.2-next.1 + - @backstage/plugin-catalog-import@0.13.9-next.1 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.2.25-next.0 + - @backstage/plugin-devtools@0.1.35-next.1 + - @backstage/plugin-home@0.8.16-next.1 + - @backstage/plugin-kubernetes@0.12.15-next.1 + - @backstage/plugin-kubernetes-cluster@0.0.33-next.1 + - @backstage/plugin-notifications@0.5.13-next.0 + - @backstage/plugin-org@0.6.48-next.1 + - @backstage/plugin-scaffolder@1.35.1-next.1 + - @backstage/plugin-scaffolder-react@1.19.5-next.1 + - @backstage/plugin-search-react@1.10.2-next.0 + - @backstage/plugin-signals@0.0.27-next.0 + - @backstage/plugin-techdocs@1.16.2-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.1 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + - @backstage/plugin-user-settings@0.8.31-next.1 + +## 0.2.117-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-import@0.13.9-next.0 + - @backstage/plugin-scaffolder@1.35.1-next.0 + - @backstage/plugin-techdocs@1.16.2-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.32-next.0 + - @backstage/plugin-catalog@1.32.2-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/plugin-scaffolder-react@1.19.5-next.0 + - @backstage/frontend-app-api@0.13.4-next.0 + - @backstage/plugin-api-docs@0.13.3-next.0 + - @backstage/plugin-catalog-graph@0.5.5-next.0 + - @backstage/plugin-org@0.6.48-next.0 + - @backstage/plugin-user-settings@0.8.31-next.0 + - @backstage/plugin-home@0.8.16-next.0 + - @backstage/plugin-kubernetes@0.12.15-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.33-next.0 + - @backstage/plugin-search@1.5.2-next.0 + - @backstage/plugin-search-react@1.10.1 + - @backstage/plugin-devtools@0.1.35-next.0 + +## 0.2.117-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/cli@0.35.2-next.0 + - @backstage/plugin-mui-to-bui@0.2.3-next.0 + - @backstage/app-defaults@1.7.3 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/core-app-api@1.19.3 + - @backstage/core-components@0.18.4 + - @backstage/core-plugin-api@1.12.1 + - @backstage/frontend-app-api@0.13.3 + - @backstage/integration-react@1.2.13 + - @backstage/theme@0.7.1 + - @backstage/plugin-api-docs@0.13.2 + - @backstage/plugin-auth-react@0.1.22 + - @backstage/plugin-catalog@1.32.1 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-graph@0.5.4 + - @backstage/plugin-catalog-import@0.13.8 + - @backstage/plugin-catalog-react@1.21.4 + - @backstage/plugin-catalog-unprocessed-entities@0.2.24 + - @backstage/plugin-devtools@0.1.34 + - @backstage/plugin-home@0.8.15 + - @backstage/plugin-kubernetes@0.12.14 + - @backstage/plugin-kubernetes-cluster@0.0.32 + - @backstage/plugin-notifications@0.5.12 + - @backstage/plugin-org@0.6.47 + - @backstage/plugin-permission-react@0.4.39 + - @backstage/plugin-scaffolder@1.35.0 + - @backstage/plugin-scaffolder-react@1.19.4 + - @backstage/plugin-search@1.5.1 + - @backstage/plugin-search-common@1.2.21 + - @backstage/plugin-search-react@1.10.1 + - @backstage/plugin-signals@0.0.26 + - @backstage/plugin-techdocs@1.16.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.31 + - @backstage/plugin-techdocs-react@1.3.6 + - @backstage/plugin-user-settings@0.8.30 + ## 0.2.116 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index e1f55c6114..5e54857fd8 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.116", + "version": "0.2.117-next.2", "backstage": { "role": "frontend" }, @@ -96,7 +96,7 @@ "@types/react-dom": "*", "@types/zen-observable": "^0.8.0", "axios": "^1.13.0", - "cross-env": "^7.0.0", + "cross-env": "^10.0.0", "msw": "^1.0.0" }, "bundled": true diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index dcd5361493..dea4639dfd 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/backend-defaults +## 0.14.1-next.1 + +### Patch Changes + +- 3afeab4: Implementing `readTree` for `GoogleGcsReader` +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## 0.14.1-next.0 + +### Patch Changes + +- 7126bf2: Fixed a spelling mistake in root health service shutdown response. +- Updated dependencies + - @backstage/backend-app-api@1.4.0 + - @backstage/backend-dev-utils@0.1.6 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/cli-node@0.2.16 + - @backstage/config@1.3.6 + - @backstage/config-loader@1.10.7 + - @backstage/errors@1.2.7 + - @backstage/integration@1.19.0 + - @backstage/integration-aws-node@0.1.19 + - @backstage/types@1.2.2 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-node@0.10.7 + ## 0.14.0 ### Minor Changes diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 9281c5481a..84df549e6a 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-defaults", - "version": "0.14.0", + "version": "0.14.1-next.1", "description": "Backend defaults used by Backstage backend apps", "backstage": { "role": "node-library" diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GoogleGcsUrlReader.test.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GoogleGcsUrlReader.test.ts index 7429bae94f..52d9660632 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GoogleGcsUrlReader.test.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GoogleGcsUrlReader.test.ts @@ -23,12 +23,18 @@ import { UrlReaderPredicateTuple } from './types'; import packageinfo from '../../../../package.json'; import { mockServices } from '@backstage/backend-test-utils'; import { UrlReaderServiceReadUrlResponse } from '@backstage/backend-plugin-api'; +import { Readable } from 'stream'; const bucketGetFilesMock = jest.fn(); class Bucket { getFiles(query: any) { return bucketGetFilesMock(query); } + file(_name: string) { + return { + createReadStream: () => Readable.from(Buffer.from('mock content')), + }; + } } class Storage { bucket() { @@ -186,4 +192,56 @@ describe('GcsUrlReader', () => { expect((await data.files[0].content()).toString()).toEqual('content'); }); }); + + describe('readTree', () => { + const { reader } = createReader({ integrations: { googleGcs: {} } })[0]; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('returns files with relative paths', async () => { + const mockFile1 = { + name: 'prefix/file1.yaml', + metadata: { updated: '2024-01-01T00:00:00Z' }, + createReadStream: () => Readable.from(Buffer.from('content1')), + }; + const mockFile2 = { + name: 'prefix/subdir/file2.yaml', + metadata: { updated: '2024-01-02T00:00:00Z' }, + createReadStream: () => Readable.from(Buffer.from('content2')), + }; + bucketGetFilesMock.mockResolvedValue([[mockFile1, mockFile2]]); + + const result = await reader.readTree( + 'https://storage.cloud.google.com/bucket/prefix/', + ); + const files = await result.files(); + + expect(files).toHaveLength(2); + expect(files[0].path).toBe('file1.yaml'); + expect(files[1].path).toBe('subdir/file2.yaml'); + }); + + it('calls getFiles with correct prefix', async () => { + bucketGetFilesMock.mockResolvedValue([[]]); + + await reader.readTree( + 'https://storage.cloud.google.com/bucket/some/prefix/', + ); + + expect(bucketGetFilesMock).toHaveBeenCalledWith({ + autoPaginate: true, + prefix: 'some/prefix/', + }); + }); + + it('throws if readTree url contains glob pattern', async () => { + await expect( + reader.readTree('https://storage.cloud.google.com/bucket/path/*'), + ).rejects.toThrow( + 'GcsUrlReader readTree does not support glob patterns, use search instead', + ); + }); + }); }); diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GoogleGcsUrlReader.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GoogleGcsUrlReader.ts index 0bc5add43f..a29b98eb51 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GoogleGcsUrlReader.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GoogleGcsUrlReader.ts @@ -17,22 +17,25 @@ import * as GoogleCloud from '@google-cloud/storage'; import { UrlReaderService, + UrlReaderServiceReadTreeOptions, UrlReaderServiceReadTreeResponse, UrlReaderServiceReadUrlOptions, UrlReaderServiceReadUrlResponse, UrlReaderServiceSearchOptions, UrlReaderServiceSearchResponse, } from '@backstage/backend-plugin-api'; -import { ReaderFactory } from './types'; +import { ReaderFactory, ReadTreeResponseFactory } from './types'; import getRawBody from 'raw-body'; import { GoogleGcsIntegrationConfig, readGoogleGcsIntegrationConfig, } from '@backstage/integration'; + import { Readable } from 'stream'; import { ReadUrlResponseFactory } from './ReadUrlResponseFactory'; import packageinfo from '../../../../package.json'; import { assertError } from '@backstage/errors'; +import { relative } from 'path/posix'; const GOOGLE_GCS_HOST = 'storage.cloud.google.com'; @@ -59,7 +62,7 @@ const parseURL = ( * @public */ export class GoogleGcsUrlReader implements UrlReaderService { - static factory: ReaderFactory = ({ config, logger }) => { + static factory: ReaderFactory = ({ config, logger, treeResponseFactory }) => { if (!config.has('integrations.googleGcs')) { return []; } @@ -83,20 +86,29 @@ export class GoogleGcsUrlReader implements UrlReaderService { userAgent: `backstage/backend-defaults.GoogleGcsUrlReader/${packageinfo.version}`, }); } - const reader = new GoogleGcsUrlReader(gcsConfig, storage); + const reader = new GoogleGcsUrlReader(gcsConfig, storage, { + treeResponseFactory, + }); const predicate = (url: URL) => url.host === GOOGLE_GCS_HOST; return [{ reader, predicate }]; }; private readonly integration: GoogleGcsIntegrationConfig; private readonly storage: GoogleCloud.Storage; + private readonly deps: { + treeResponseFactory: ReadTreeResponseFactory; + }; constructor( integration: GoogleGcsIntegrationConfig, storage: GoogleCloud.Storage, + deps: { + treeResponseFactory: ReadTreeResponseFactory; + }, ) { this.integration = integration; this.storage = storage; + this.deps = deps; } private readStreamFromUrl(url: string): Readable { @@ -121,8 +133,32 @@ export class GoogleGcsUrlReader implements UrlReaderService { return ReadUrlResponseFactory.fromReadable(stream); } - async readTree(): Promise { - throw new Error('GcsUrlReader does not implement readTree'); + async readTree( + url: string, + _options?: UrlReaderServiceReadTreeOptions, + ): Promise { + const { bucket, key } = parseURL(url); + + if (key.match(/[*?]/)) { + throw new Error( + 'GcsUrlReader readTree does not support glob patterns, use search instead', + ); + } + + const [files] = await this.storage.bucket(bucket).getFiles({ + autoPaginate: true, + prefix: key, + }); + + const responses = files.map(file => ({ + data: file.createReadStream(), + path: relative(key, file.name), + lastModifiedAt: file.metadata.updated + ? new Date(file.metadata.updated as string) + : undefined, + })); + + return this.deps.treeResponseFactory.fromReadableArray(responses); } async search( diff --git a/packages/backend-dynamic-feature-service/CHANGELOG.md b/packages/backend-dynamic-feature-service/CHANGELOG.md index 4563cb8381..b98fa78082 100644 --- a/packages/backend-dynamic-feature-service/CHANGELOG.md +++ b/packages/backend-dynamic-feature-service/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/backend-dynamic-feature-service +## 0.7.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/plugin-catalog-backend@3.3.1-next.1 + - @backstage/plugin-scaffolder-node@0.12.3-next.0 + +## 0.7.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/cli-common@0.1.16 + - @backstage/cli-node@0.2.16 + - @backstage/config@1.3.6 + - @backstage/config-loader@1.10.7 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-app-node@0.1.40 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-catalog-backend@3.3.1-next.0 + - @backstage/plugin-events-backend@0.5.10-next.0 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + - @backstage/plugin-scaffolder-node@0.12.2 + - @backstage/plugin-search-backend-node@1.4.0 + - @backstage/plugin-search-common@1.2.21 + ## 0.7.7 ### Patch Changes diff --git a/packages/backend-dynamic-feature-service/package.json b/packages/backend-dynamic-feature-service/package.json index 418a8c804d..1cabe17923 100644 --- a/packages/backend-dynamic-feature-service/package.json +++ b/packages/backend-dynamic-feature-service/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-dynamic-feature-service", - "version": "0.7.7", + "version": "0.7.8-next.1", "description": "Backstage dynamic feature service", "backstage": { "role": "node-library" diff --git a/packages/backend-openapi-utils/CHANGELOG.md b/packages/backend-openapi-utils/CHANGELOG.md index 9a741882b0..f90fecb9cc 100644 --- a/packages/backend-openapi-utils/CHANGELOG.md +++ b/packages/backend-openapi-utils/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/backend-openapi-utils +## 0.6.5-next.0 + +### Patch Changes + +- 6678b78: Internal update to use native feature from our request validation library for handling base path determination. +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + ## 0.6.4 ### Patch Changes diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index 987c3189fa..5efffd1c55 100644 --- a/packages/backend-openapi-utils/package.json +++ b/packages/backend-openapi-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-openapi-utils", - "version": "0.6.4", + "version": "0.6.5-next.0", "description": "OpenAPI typescript support.", "backstage": { "role": "node-library" diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index 876aac6137..ca456b8491 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/backend-test-utils +## 1.10.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-app-api@1.4.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-common@0.9.3 + ## 1.10.2 ### Patch Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 1051119b20..1f6df8457d 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-test-utils", - "version": "1.10.2", + "version": "1.10.3-next.0", "description": "Test helpers library for Backstage backends", "backstage": { "role": "node-library" diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index c287d55ddd..b3eab5806b 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,62 @@ # example-backend +## 0.0.46-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/plugin-techdocs-backend@2.1.4-next.1 + - @backstage/plugin-catalog-backend@3.3.1-next.1 + - @backstage/plugin-catalog-backend-module-openapi@0.2.18-next.0 + - @backstage/plugin-scaffolder-backend@3.1.1-next.1 + - @backstage/plugin-scaffolder-backend-module-github@0.9.4-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.16-next.0 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.18-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.4.10-next.0 + +## 0.0.46-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/plugin-app-backend@0.5.9 + - @backstage/plugin-auth-backend@0.25.7 + - @backstage/plugin-auth-backend-module-github-provider@0.4.0 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.15 + - @backstage/plugin-auth-backend-module-openshift-provider@0.1.3 + - @backstage/plugin-auth-node@0.6.10 + - @backstage/plugin-catalog-backend@3.3.1-next.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.5.10-next.0 + - @backstage/plugin-catalog-backend-module-openapi@0.2.17 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.15 + - @backstage/plugin-catalog-backend-module-unprocessed@0.6.7 + - @backstage/plugin-devtools-backend@0.5.13-next.0 + - @backstage/plugin-events-backend@0.5.10-next.0 + - @backstage/plugin-events-backend-module-google-pubsub@0.1.7 + - @backstage/plugin-kubernetes-backend@0.21.0 + - @backstage/plugin-mcp-actions-backend@0.1.7-next.0 + - @backstage/plugin-notifications-backend@0.6.1 + - @backstage/plugin-permission-backend@0.7.7 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.15 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + - @backstage/plugin-proxy-backend@0.6.9 + - @backstage/plugin-scaffolder-backend@3.1.1-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.9.3 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.17 + - @backstage/plugin-search-backend@2.0.10-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.11 + - @backstage/plugin-search-backend-module-elasticsearch@1.7.9 + - @backstage/plugin-search-backend-module-explore@0.3.10 + - @backstage/plugin-search-backend-module-techdocs@0.4.9 + - @backstage/plugin-search-backend-node@1.4.0 + - @backstage/plugin-signals-backend@0.3.11 + - @backstage/plugin-techdocs-backend@2.1.4-next.0 + ## 0.0.45 ### Patch Changes diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile index e07c266057..91d0f02dbc 100644 --- a/packages/backend/Dockerfile +++ b/packages/backend/Dockerfile @@ -9,7 +9,7 @@ # # Once the commands have been run, you can build the image using `yarn build-image` -FROM node:20-bookworm-slim +FROM node:24-trixie-slim # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, # in which case you should also move better-sqlite3 to "devDependencies" in package.json. diff --git a/packages/backend/package.json b/packages/backend/package.json index 553cb21e67..918d809d2e 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.0.45", + "version": "0.0.46-next.1", "backstage": { "role": "backend" }, diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 35392ff03c..03f4533e4c 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/cli +## 0.35.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## 0.35.2-next.0 + +### Patch Changes + +- 320c6a9: Bump `@swc/core` to support `ES2023` and `ES2024` +- 9ee5996: Bump minimum required `@swc/core` to avoid transpilation bug +- Updated dependencies + - @backstage/catalog-model@1.7.6 + - @backstage/cli-common@0.1.16 + - @backstage/cli-node@0.2.16 + - @backstage/config@1.3.6 + - @backstage/config-loader@1.10.7 + - @backstage/errors@1.2.7 + - @backstage/eslint-plugin@0.2.0 + - @backstage/integration@1.19.0 + - @backstage/release-manifests@0.0.13 + - @backstage/types@1.2.2 + ## 0.35.0 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 23333cdbfd..fbefa70eff 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/cli", - "version": "0.35.0", + "version": "0.35.2-next.1", "description": "CLI for developing Backstage plugins and apps", "backstage": { "role": "cli" diff --git a/packages/core-compat-api/CHANGELOG.md b/packages/core-compat-api/CHANGELOG.md index 791b2cf1dc..55980561f4 100644 --- a/packages/core-compat-api/CHANGELOG.md +++ b/packages/core-compat-api/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/core-compat-api +## 0.5.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + ## 0.5.5 ### Patch Changes diff --git a/packages/core-compat-api/package.json b/packages/core-compat-api/package.json index f8d065a611..2894bfdca2 100644 --- a/packages/core-compat-api/package.json +++ b/packages/core-compat-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/core-compat-api", - "version": "0.5.5", + "version": "0.5.6-next.0", "backstage": { "role": "web-library" }, diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index 7346287cf6..11bed817ff 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/core-components +## 0.18.5-next.0 + +### Patch Changes + +- a723b8a: The MarkdownContent component now handles HTML content the same way as GitHub when rendering GitHub-flavored Markdown + ## 0.18.4 ### Patch Changes diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 536f0ee9f0..1ff2079676 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/core-components", - "version": "0.18.4", + "version": "0.18.5-next.0", "description": "Core components used by Backstage plugins and apps", "backstage": { "role": "web-library" @@ -77,6 +77,7 @@ "linkify-react": "4.3.2", "linkifyjs": "4.3.2", "lodash": "^4.17.21", + "parse5": "^6.0.0", "pluralize": "^8.0.0", "qs": "^6.9.4", "rc-progress": "3.5.1", @@ -90,6 +91,8 @@ "react-use": "^17.3.2", "react-virtualized-auto-sizer": "^1.0.11", "react-window": "^1.8.6", + "rehype-raw": "^6.0.0", + "rehype-sanitize": "^5.0.0", "remark-gfm": "^3.0.1", "zen-observable": "^0.10.0", "zod": "^3.22.4" diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.stories.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.stories.tsx index b6770e7d37..719f9088ba 100644 --- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.stories.tsx +++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.stories.tsx @@ -45,6 +45,29 @@ const markdownGithubFlavored = '* [ ] to do\n' + '* [x] done'; +const markdownGithubFlavoredWithHTML = + '# GFM with HTML\n' + + '\n' + + 'This is a paragraph with bold text and italic text.\n' + + '\n' + + '
\n' + + '\n' + + 'Here is a list:\n' + + '\n' + + '
    \n' + + '
  • First item
  • \n' + + '
  • Second item with a link
  • \n' + + '
  • Third item
  • \n' + + '
\n' + + '\n' + + 'And a code block:\n' + + '\n' + + '
\n' +
+  'function greet() {\n' +
+  '  console.log("Hello, world!");\n' +
+  '}\n' +
+  '
\n'; + const markdown = '# Choreas Iovis\n' + '\n' + @@ -117,3 +140,7 @@ export const MarkdownContentCommonMark = () => ( export const MarkdownContentGithubFlavoredCommonMark = () => ( ); + +export const MarkdownContentGithubFlavoredWithHTML = () => ( + +); diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx index 6f20f776e3..4dd40edcbf 100644 --- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx +++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx @@ -163,4 +163,52 @@ describe('', () => { 'the-fitnessgram-pacer-test-is-a-multistage-aerobic-capacity-test', ); }); + + it('render MarkdownContent component with br tags for new lines in GFM dialect', async () => { + await renderInTestApp( + , + ); + + const line1 = screen.getByText(/Line 1/); + const line2 = screen.getByText(/Line 2/); + const line3 = screen.getByText(/Line 3/); + + expect(line1.nextSibling?.nodeName).toBe('BR'); + expect(line2.previousSibling?.nodeName).toBe('BR'); + expect(line2.nextSibling?.nodeName).toBe('BR'); + expect(line3.previousSibling?.nodeName).toBe('BR'); + }); + + it('render MarkdownContent component without allowing inline styles in GFM dialect', async () => { + await renderInTestApp( + , + ); + + const divElement = screen.getByText( + 'This is a custom HTML block with inline styles.', + ); + expect(divElement).toBeInTheDocument(); + expect(divElement).not.toHaveStyle('color: blue'); + expect(divElement).not.toHaveStyle('border: 1px solid black'); + expect(divElement).not.toHaveStyle('padding: 10px'); + }); + + it('render MarkdownContent component without disallowed elements in GFM dialect', async () => { + const { container } = await renderInTestApp( + , + ); + + expect(screen.getByText('Safe Content')).toBeInTheDocument(); + expect(container.querySelector('script')).toBeNull(); + expect(container.querySelector('style')).toBeNull(); + }); }); diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx index 5ad23cce09..6d978ebb6f 100644 --- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx +++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx @@ -20,6 +20,9 @@ import gfm from 'remark-gfm'; import { Children, createElement } from 'react'; import { CodeSnippet } from '../CodeSnippet'; import { HeadingProps } from 'react-markdown/lib/ast-to-react'; +import rehypeRaw from 'rehype-raw'; +import rehypeSanitize, { defaultSchema } from 'rehype-sanitize'; +import type { PluggableList } from 'react-markdown/lib/react-markdown'; export type MarkdownContentClassKey = 'markdown'; @@ -108,6 +111,30 @@ const components: Options['components'] = { h6: headingRenderer, }; +const gfmRehypePlugins: PluggableList = [ + [ + rehypeRaw, + { + tagFiter: true, + }, + ], + [ + rehypeSanitize, + { + ...defaultSchema, + attributes: { + ...defaultSchema.attributes, + code: [ + ...(defaultSchema.attributes?.code ?? []), + // for syntax highlighting classes in code blocks + // breaks the codesnippet component override above if omitted + ['className'], + ], + }, + }, + ], +]; + /** * Renders markdown with the default dialect {@link https://github.github.com/gfm/ | gfm - GitHub flavored Markdown} to backstage theme styled HTML. * @@ -127,6 +154,7 @@ export function MarkdownContent(props: Props) { return ( { it('should be instantiated', () => { const i = ScmIntegrationsApi.fromConfig(new ConfigReader({})); - expect(i.list().length).toBe(7); // The default ones + expect(i.list().length).toBe(8); // The default ones }); }); diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index b732447310..f361879e5e 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/integration +## 1.19.2-next.0 + +### Patch Changes + +- 3afeab4: Implementing `ScmIntegration` for `GoogleGcs` +- 9083273: Rollback the lowercase replacing in GitHub integration config + ## 1.19.0 ### Minor Changes diff --git a/packages/integration/package.json b/packages/integration/package.json index a7f65efc9f..75498b4869 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/integration", - "version": "1.19.0", + "version": "1.19.2-next.0", "description": "Helpers for managing integrations towards external systems", "backstage": { "role": "common-library" diff --git a/packages/integration/report.api.md b/packages/integration/report.api.md index 561dea979d..abcdb8898b 100644 --- a/packages/integration/report.api.md +++ b/packages/integration/report.api.md @@ -781,8 +781,30 @@ export type GitLabIntegrationConfig = { commitSigningKey?: string; }; +// @public +export class GoogleGcsIntegration implements ScmIntegration { + constructor(integrationConfig: GoogleGcsIntegrationConfig); + // (undocumented) + get config(): GoogleGcsIntegrationConfig; + // (undocumented) + static factory: ScmIntegrationsFactory; + // (undocumented) + resolveEditUrl(url: string): string; + // (undocumented) + resolveUrl(options: { + url: string; + base: string; + lineNumber?: number | undefined; + }): string; + // (undocumented) + get title(): string; + // (undocumented) + get type(): string; +} + // @public export type GoogleGcsIntegrationConfig = { + host: string; clientEmail?: string; privateKey?: string; }; @@ -840,6 +862,8 @@ export interface IntegrationsByType { // (undocumented) gitlab: ScmIntegrationsGroup; // (undocumented) + googleGcs: ScmIntegrationsGroup; + // (undocumented) harness: ScmIntegrationsGroup; } @@ -1110,6 +1134,8 @@ export class ScmIntegrations implements ScmIntegrationRegistry { // (undocumented) get gitlab(): ScmIntegrationsGroup; // (undocumented) + get googleGcs(): ScmIntegrationsGroup; + // (undocumented) get harness(): ScmIntegrationsGroup; // (undocumented) list(): ScmIntegration[]; diff --git a/packages/integration/src/ScmIntegrations.test.ts b/packages/integration/src/ScmIntegrations.test.ts index 0e0c181861..7f75ab44fc 100644 --- a/packages/integration/src/ScmIntegrations.test.ts +++ b/packages/integration/src/ScmIntegrations.test.ts @@ -43,6 +43,7 @@ import { AzureBlobStorageIntegrationConfig, AzureBlobStorageIntergation, } from './azureBlobStorage'; +import { GoogleGcsIntegration, GoogleGcsIntegrationConfig } from './googleGcs'; describe('ScmIntegrations', () => { const awsS3 = new AwsS3Integration({ @@ -93,6 +94,10 @@ describe('ScmIntegrations', () => { host: 'harness.local', } as HarnessIntegrationConfig); + const googleGcs = new GoogleGcsIntegration({ + host: 'storage.cloud.google.com', + } as GoogleGcsIntegrationConfig); + const i = new ScmIntegrations({ awsS3: basicIntegrations([awsS3], item => item.config.host), awsCodeCommit: basicIntegrations([awsCodeCommit], item => item.config.host), @@ -108,6 +113,7 @@ describe('ScmIntegrations', () => { github: basicIntegrations([github], item => item.config.host), gitlab: basicIntegrations([gitlab], item => item.config.host), gitea: basicIntegrations([gitea], item => item.config.host), + googleGcs: basicIntegrations([googleGcs], item => item.config.host), harness: basicIntegrations([harness], item => item.config.host), }); diff --git a/packages/integration/src/ScmIntegrations.ts b/packages/integration/src/ScmIntegrations.ts index f11cb3c17e..573975da0e 100644 --- a/packages/integration/src/ScmIntegrations.ts +++ b/packages/integration/src/ScmIntegrations.ts @@ -30,6 +30,7 @@ import { ScmIntegrationRegistry } from './registry'; import { GiteaIntegration } from './gitea'; import { HarnessIntegration } from './harness/HarnessIntegration'; import { AzureBlobStorageIntergation } from './azureBlobStorage'; +import { GoogleGcsIntegration } from './googleGcs/GoogleGcsIntegration'; /** * The set of supported integrations. @@ -51,6 +52,7 @@ export interface IntegrationsByType { github: ScmIntegrationsGroup; gitlab: ScmIntegrationsGroup; gitea: ScmIntegrationsGroup; + googleGcs: ScmIntegrationsGroup; harness: ScmIntegrationsGroup; } @@ -75,6 +77,7 @@ export class ScmIntegrations implements ScmIntegrationRegistry { github: GithubIntegration.factory({ config }), gitlab: GitLabIntegration.factory({ config }), gitea: GiteaIntegration.factory({ config }), + googleGcs: GoogleGcsIntegration.factory({ config }), harness: HarnessIntegration.factory({ config }), }); } @@ -130,6 +133,10 @@ export class ScmIntegrations implements ScmIntegrationRegistry { return this.byType.gitea; } + get googleGcs(): ScmIntegrationsGroup { + return this.byType.googleGcs; + } + get harness(): ScmIntegrationsGroup { return this.byType.harness; } diff --git a/packages/integration/src/github/GithubIntegration.test.ts b/packages/integration/src/github/GithubIntegration.test.ts index c54d4db2ef..70f1c4a16c 100644 --- a/packages/integration/src/github/GithubIntegration.test.ts +++ b/packages/integration/src/github/GithubIntegration.test.ts @@ -134,24 +134,4 @@ describe('replaceGithubUrlType', () => { ), ).toBe('https://github.com/backstage/backstage/blob/tree/README.md'); }); - it('should replace with lowercase', () => { - expect( - replaceGithubUrlType( - 'https://githuB.com/backstage/backstage/blob/master/README.md', - 'edit', - ), - ).toBe('https://github.com/backstage/backstage/edit/master/README.md'); - expect( - replaceGithubUrlType( - 'https://github.com/Backstage/backstage/blob/master/README.md', - 'edit', - ), - ).toBe('https://github.com/backstage/backstage/edit/master/README.md'); - expect( - replaceGithubUrlType( - 'https://github.com/backstage/Backstage/blob/master/README.md', - 'edit', - ), - ).toBe('https://github.com/backstage/backstage/edit/master/README.md'); - }); }); diff --git a/packages/integration/src/github/GithubIntegration.ts b/packages/integration/src/github/GithubIntegration.ts index 79d5e7f421..880a2bed21 100644 --- a/packages/integration/src/github/GithubIntegration.ts +++ b/packages/integration/src/github/GithubIntegration.ts @@ -95,9 +95,7 @@ export function replaceGithubUrlType( return url.replace( /\/\/([^/]+)\/([^/]+)\/([^/]+)\/(blob|tree|edit)\//, (_, host, owner, repo) => { - return `//${host.toLocaleLowerCase('en-US')}/${owner.toLocaleLowerCase( - 'en-US', - )}/${repo.toLocaleLowerCase('en-US')}/${type}/`; + return `//${host}/${owner}/${repo}/${type}/`; }, ); } diff --git a/packages/integration/src/googleGcs/GoogleGcsIntegration.test.ts b/packages/integration/src/googleGcs/GoogleGcsIntegration.test.ts new file mode 100644 index 0000000000..5666a0aa5e --- /dev/null +++ b/packages/integration/src/googleGcs/GoogleGcsIntegration.test.ts @@ -0,0 +1,80 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { GoogleGcsIntegration } from './GoogleGcsIntegration'; + +describe('GoogleGcsIntegration', () => { + it('has a working factory', () => { + const integrations = GoogleGcsIntegration.factory({ + config: new ConfigReader({ + integrations: { + googleGcs: { + clientEmail: 'someone@example.com', + privateKey: 'fake-key', + }, + }, + }), + }); + expect(integrations.list().length).toBe(1); + expect(integrations.list()[0].config.host).toBe('storage.cloud.google.com'); + }); + + it('returns default integration when no config', () => { + const integrations = GoogleGcsIntegration.factory({ + config: new ConfigReader({ + integrations: {}, + }), + }); + expect(integrations.list().length).toBe(1); + expect(integrations.list()[0].config.host).toBe('storage.cloud.google.com'); + }); + + it('returns the basics', () => { + const integration = new GoogleGcsIntegration({ + host: 'storage.cloud.google.com', + }); + expect(integration.type).toBe('googleGcs'); + expect(integration.title).toBe('storage.cloud.google.com'); + }); + + describe('resolveUrl', () => { + it('works for valid urls', () => { + const integration = new GoogleGcsIntegration({ + host: 'storage.cloud.google.com', + }); + + expect( + integration.resolveUrl({ + url: 'https://storage.cloud.google.com/bucket/catalog-info.yaml', + base: 'https://storage.cloud.google.com/bucket/catalog-info.yaml', + }), + ).toBe('https://storage.cloud.google.com/bucket/catalog-info.yaml'); + }); + }); + + it('resolve edit URL', () => { + const integration = new GoogleGcsIntegration({ + host: 'storage.cloud.google.com', + }); + + expect( + integration.resolveEditUrl( + 'https://storage.cloud.google.com/bucket/catalog-info.yaml', + ), + ).toBe('https://storage.cloud.google.com/bucket/catalog-info.yaml'); + }); +}); diff --git a/packages/integration/src/googleGcs/GoogleGcsIntegration.ts b/packages/integration/src/googleGcs/GoogleGcsIntegration.ts new file mode 100644 index 0000000000..11642a231c --- /dev/null +++ b/packages/integration/src/googleGcs/GoogleGcsIntegration.ts @@ -0,0 +1,71 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { basicIntegrations, defaultScmResolveUrl } from '../helpers'; +import { ScmIntegration, ScmIntegrationsFactory } from '../types'; +import { + GoogleGcsIntegrationConfig, + readGoogleGcsIntegrationConfig, + GOOGLE_GCS_HOST, +} from './config'; + +/** + * A Google Cloud Storage based integration. + * + * @public + */ +export class GoogleGcsIntegration implements ScmIntegration { + static factory: ScmIntegrationsFactory = ({ + config, + }) => { + const gcsConfig = config.has('integrations.googleGcs') + ? readGoogleGcsIntegrationConfig( + config.getConfig('integrations.googleGcs'), + ) + : { host: GOOGLE_GCS_HOST }; + + return basicIntegrations( + [new GoogleGcsIntegration(gcsConfig)], + i => i.config.host, + ); + }; + + get type(): string { + return 'googleGcs'; + } + + get title(): string { + return this.integrationConfig.host; + } + + get config(): GoogleGcsIntegrationConfig { + return this.integrationConfig; + } + + constructor(private readonly integrationConfig: GoogleGcsIntegrationConfig) {} + + resolveUrl(options: { + url: string; + base: string; + lineNumber?: number | undefined; + }): string { + return defaultScmResolveUrl(options); + } + + resolveEditUrl(url: string): string { + return url; + } +} diff --git a/packages/integration/src/googleGcs/config.test.ts b/packages/integration/src/googleGcs/config.test.ts index 892440c64a..d074cb7129 100644 --- a/packages/integration/src/googleGcs/config.test.ts +++ b/packages/integration/src/googleGcs/config.test.ts @@ -33,13 +33,16 @@ describe('readGoogleGcsIntegrationConfig', () => { }), ); expect(output).toEqual({ + host: 'storage.cloud.google.com', privateKey: 'fake-key', clientEmail: 'someone@example.com', }); }); - it('does not fail when config is not set', () => { + it('returns default config when config is not set', () => { const output = readGoogleGcsIntegrationConfig(buildConfig({})); - expect(output).toEqual({}); + expect(output).toEqual({ + host: 'storage.cloud.google.com', + }); }); }); diff --git a/packages/integration/src/googleGcs/config.ts b/packages/integration/src/googleGcs/config.ts index 3c03204e4c..9421b9dfba 100644 --- a/packages/integration/src/googleGcs/config.ts +++ b/packages/integration/src/googleGcs/config.ts @@ -16,12 +16,22 @@ import { Config } from '@backstage/config'; +/** + * The default Google Cloud Storage host. + * + */ +export const GOOGLE_GCS_HOST = 'storage.cloud.google.com'; + /** * The configuration parameters for a single Google Cloud Storage provider. * * @public */ export type GoogleGcsIntegrationConfig = { + /** + * The host of the target that this matches on. + */ + host: string; /** * Service account email used to authenticate requests. */ @@ -42,15 +52,19 @@ export function readGoogleGcsIntegrationConfig( config: Config, ): GoogleGcsIntegrationConfig { if (!config) { - return {}; + return { host: GOOGLE_GCS_HOST }; } if (!config.has('clientEmail') && !config.has('privateKey')) { - return {}; + return { host: GOOGLE_GCS_HOST }; } const privateKey = config.getString('privateKey').split('\\n').join('\n'); - const clientEmail = config.getString('clientEmail'); - return { clientEmail: clientEmail, privateKey: privateKey }; + + return { + host: GOOGLE_GCS_HOST, + clientEmail, + privateKey, + }; } diff --git a/packages/integration/src/googleGcs/index.ts b/packages/integration/src/googleGcs/index.ts index 3d7beae59d..c30138fc3e 100644 --- a/packages/integration/src/googleGcs/index.ts +++ b/packages/integration/src/googleGcs/index.ts @@ -16,3 +16,4 @@ export { readGoogleGcsIntegrationConfig } from './config'; export type { GoogleGcsIntegrationConfig } from './config'; +export { GoogleGcsIntegration } from './GoogleGcsIntegration'; diff --git a/packages/integration/src/setupTests.ts b/packages/integration/src/setupTests.ts index d3232290a7..40bb41eb2a 100644 --- a/packages/integration/src/setupTests.ts +++ b/packages/integration/src/setupTests.ts @@ -14,4 +14,5 @@ * limitations under the License. */ -export {}; +global.setImmediate = require('timers').setImmediate; +global.clearImmediate = require('timers').clearImmediate; diff --git a/packages/scaffolder-internal/CHANGELOG.md b/packages/scaffolder-internal/CHANGELOG.md index 35db413d8f..870d3dbd04 100644 --- a/packages/scaffolder-internal/CHANGELOG.md +++ b/packages/scaffolder-internal/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/scaffolder +## 0.0.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.19.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + ## 0.0.16 ### Patch Changes diff --git a/packages/scaffolder-internal/package.json b/packages/scaffolder-internal/package.json index 98d76bb84e..5ceabdd331 100644 --- a/packages/scaffolder-internal/package.json +++ b/packages/scaffolder-internal/package.json @@ -1,6 +1,6 @@ { "name": "@internal/scaffolder", - "version": "0.0.16", + "version": "0.0.17-next.0", "backstage": { "role": "web-library", "inline": true diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index 6542287948..5b8d53fbdd 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,48 @@ # techdocs-cli-embedded-app +## 0.2.116-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/app-defaults@1.7.4-next.0 + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog@1.32.2-next.1 + - @backstage/plugin-techdocs@1.16.2-next.1 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + +## 0.2.116-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.35.2-next.1 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-techdocs@1.16.2-next.0 + - @backstage/plugin-catalog@1.32.2-next.0 + +## 0.2.116-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/cli@0.35.2-next.0 + - @backstage/app-defaults@1.7.3 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/core-app-api@1.19.3 + - @backstage/core-components@0.18.4 + - @backstage/core-plugin-api@1.12.1 + - @backstage/integration-react@1.2.13 + - @backstage/test-utils@1.7.14 + - @backstage/theme@0.7.1 + - @backstage/plugin-catalog@1.32.1 + - @backstage/plugin-techdocs@1.16.1 + - @backstage/plugin-techdocs-react@1.3.6 + ## 0.2.115 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index e8db7e68d5..99aa3bb222 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,6 +1,6 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.115", + "version": "0.2.116-next.2", "backstage": { "role": "frontend" }, @@ -62,7 +62,7 @@ "@testing-library/user-event": "^14.0.0", "@types/react": "*", "@types/react-dom": "*", - "cross-env": "^7.0.0" + "cross-env": "^10.0.0" }, "bundled": true } diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index 5295128a8b..3d47d9b0c5 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,24 @@ # @techdocs/cli +## 1.10.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/plugin-techdocs-node@1.13.11-next.0 + +## 1.10.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/catalog-model@1.7.6 + - @backstage/cli-common@0.1.16 + - @backstage/config@1.3.6 + - @backstage/plugin-techdocs-node@1.13.10 + ## 1.10.3 ### Patch Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index c27d829fe7..a1cb6fa4ec 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -1,6 +1,6 @@ { "name": "@techdocs/cli", - "version": "1.10.3", + "version": "1.10.4-next.1", "description": "Utility CLI for managing TechDocs sites in Backstage.", "backstage": { "role": "cli" diff --git a/packages/ui/CHANGELOG.md b/packages/ui/CHANGELOG.md index c3c0ffb38f..c692731a10 100644 --- a/packages/ui/CHANGELOG.md +++ b/packages/ui/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/ui +## 0.11.0-next.0 + +### Minor Changes + +- 4ea1d15: **BREAKING**: Renamed CSS variable `--bui-bg` to `--bui-bg-surface-0` for consistency. + +### Patch Changes + +- 1880402: Fixes app background color on dark mode. +- 9c76682: build(deps-dev): bump `storybook` from 10.1.9 to 10.1.10 +- b4a4911: Fixed SearchField `startCollapsed` prop not working correctly in Backstage UI. The field now properly starts in a collapsed state, expands when clicked and focused, and collapses back when unfocused with no input. Also fixed CSS logic to work correctly in all layout contexts (flex row, flex column, and regular containers). + + Affected components: SearchField + ## 0.10.0 ### Minor Changes diff --git a/packages/ui/package.json b/packages/ui/package.json index bd7bc2f25b..2c78d659ba 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/ui", - "version": "0.10.0", + "version": "0.11.0-next.0", "backstage": { "role": "web-library" }, diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index 58db7fac24..1f42f0699a 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-api-docs +## 0.13.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog@1.32.2-next.1 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## 0.13.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.32.2-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + ## 0.13.2 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index fd387bdbae..e905876902 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-api-docs", - "version": "0.13.2", + "version": "0.13.3-next.1", "description": "A Backstage plugin that helps represent API entities in the frontend", "backstage": { "role": "frontend-plugin", diff --git a/plugins/app-visualizer/CHANGELOG.md b/plugins/app-visualizer/CHANGELOG.md index 22cff4ea85..40434d36d9 100644 --- a/plugins/app-visualizer/CHANGELOG.md +++ b/plugins/app-visualizer/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-app-visualizer +## 0.1.27-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## 0.1.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/ui@0.11.0-next.0 + - @backstage/core-components@0.18.4 + - @backstage/core-plugin-api@1.12.1 + - @backstage/frontend-plugin-api@0.13.2 + ## 0.1.26 ### Patch Changes diff --git a/plugins/app-visualizer/package.json b/plugins/app-visualizer/package.json index 6ece031af4..7346863fb8 100644 --- a/plugins/app-visualizer/package.json +++ b/plugins/app-visualizer/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-app-visualizer", - "version": "0.1.26", + "version": "0.1.27-next.1", "description": "Visualizes the Backstage app structure", "backstage": { "role": "frontend-plugin", diff --git a/plugins/app/CHANGELOG.md b/plugins/app/CHANGELOG.md index 66e1ca5b0b..7fa8fd91f3 100644 --- a/plugins/app/CHANGELOG.md +++ b/plugins/app/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-app +## 0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration-react@1.2.14-next.0 + - @backstage/frontend-plugin-api@0.13.2 + ## 0.3.3 ### Patch Changes diff --git a/plugins/app/package.json b/plugins/app/package.json index a6a25d08ad..1d277a30e3 100644 --- a/plugins/app/package.json +++ b/plugins/app/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-app", - "version": "0.3.3", + "version": "0.3.4-next.1", "backstage": { "role": "frontend-plugin", "pluginId": "app", diff --git a/plugins/auth-backend-module-oidc-provider/CHANGELOG.md b/plugins/auth-backend-module-oidc-provider/CHANGELOG.md index 1c89ff764f..591f1139e9 100644 --- a/plugins/auth-backend-module-oidc-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oidc-provider/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-auth-backend-module-oidc-provider +## 0.4.11-next.0 + +### Patch Changes + +- e54fcb2: Added support for custom start URL search parameters (with the new `startUrlSearchParams` config property) +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/config@1.3.6 + - @backstage/types@1.2.2 + - @backstage/plugin-auth-backend@0.25.7 + - @backstage/plugin-auth-node@0.6.10 + ## 0.4.10 ### Patch Changes diff --git a/plugins/auth-backend-module-oidc-provider/package.json b/plugins/auth-backend-module-oidc-provider/package.json index 22e753e84e..933182d80d 100644 --- a/plugins/auth-backend-module-oidc-provider/package.json +++ b/plugins/auth-backend-module-oidc-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-oidc-provider", - "version": "0.4.10", + "version": "0.4.11-next.0", "description": "The oidc-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-react/CHANGELOG.md b/plugins/auth-react/CHANGELOG.md index 8d5ee31f64..6ebf3f46eb 100644 --- a/plugins/auth-react/CHANGELOG.md +++ b/plugins/auth-react/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-auth-react +## 0.1.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + ## 0.1.22 ### Patch Changes diff --git a/plugins/auth-react/package.json b/plugins/auth-react/package.json index 3a11292642..2404a076d7 100644 --- a/plugins/auth-react/package.json +++ b/plugins/auth-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-react", - "version": "0.1.22", + "version": "0.1.23-next.0", "description": "Web library for the auth plugin", "backstage": { "role": "web-library", diff --git a/plugins/auth/CHANGELOG.md b/plugins/auth/CHANGELOG.md index f402cffbd3..d03442d7cf 100644 --- a/plugins/auth/CHANGELOG.md +++ b/plugins/auth/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-auth +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/auth/package.json b/plugins/auth/package.json index 629d00efa9..d582add938 100644 --- a/plugins/auth/package.json +++ b/plugins/auth/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth", - "version": "0.1.3", + "version": "0.1.4-next.0", "backstage": { "role": "frontend-plugin", "pluginId": "auth", diff --git a/plugins/bitbucket-cloud-common/CHANGELOG.md b/plugins/bitbucket-cloud-common/CHANGELOG.md index 2eb6fd31b6..a1a06e7318 100644 --- a/plugins/bitbucket-cloud-common/CHANGELOG.md +++ b/plugins/bitbucket-cloud-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-bitbucket-cloud-common +## 0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + ## 0.3.5 ### Patch Changes diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json index ac47687ae3..536ae53f9f 100644 --- a/plugins/bitbucket-cloud-common/package.json +++ b/plugins/bitbucket-cloud-common/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bitbucket-cloud-common", - "version": "0.3.5", + "version": "0.3.6-next.0", "description": "Common functionalities for bitbucket-cloud plugins", "backstage": { "role": "common-library", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index ac72ead2d6..03ec97083a 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.4.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/integration@1.19.2-next.0 + +## 0.4.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/integration@1.19.0 + - @backstage/integration-aws-node@0.1.19 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-kubernetes-common@0.9.9 + ## 0.4.18 ### Patch Changes diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 09362dd8c4..acdec6390e 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-aws", - "version": "0.4.18", + "version": "0.4.19-next.1", "description": "A Backstage catalog backend module that helps integrate towards AWS", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index aa61bd3b04..aeeff02acd 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.3.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + ## 0.3.12 ### Patch Changes diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index 802d80077b..6e6497e1db 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-azure", - "version": "0.3.12", + "version": "0.3.13-next.0", "description": "A Backstage catalog backend module that helps integrate towards Azure", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md b/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md index d43e5c0d4f..718dde0ce6 100644 --- a/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-backstage-openapi +## 0.5.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/plugin-catalog-node@1.20.1 + ## 0.5.9 ### Patch Changes diff --git a/plugins/catalog-backend-module-backstage-openapi/package.json b/plugins/catalog-backend-module-backstage-openapi/package.json index dbf8455dc4..9eb50da0bf 100644 --- a/plugins/catalog-backend-module-backstage-openapi/package.json +++ b/plugins/catalog-backend-module-backstage-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-backstage-openapi", - "version": "0.5.9", + "version": "0.5.10-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "catalog", diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index 52b988de1c..62149e2b19 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.5.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.3.6-next.0 + ## 0.5.6 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index acc69c594e..011b6bf909 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud", - "version": "0.5.6", + "version": "0.5.7-next.0", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md index 8e3144e659..1c73573c76 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-backend-module-bitbucket-server +## 0.5.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + ## 0.5.6 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index ea4601e9c0..c0feb69a9e 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-server", - "version": "0.5.6", + "version": "0.5.7-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "catalog", diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index ff8c27cbab..ecc3cf831b 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.3.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + ## 0.3.9 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index 4a336802e8..5cfccbffd4 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gerrit", - "version": "0.3.9", + "version": "0.3.10-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "catalog", diff --git a/plugins/catalog-backend-module-gitea/CHANGELOG.md b/plugins/catalog-backend-module-gitea/CHANGELOG.md index fa4ed4f98e..eec7ee8b10 100644 --- a/plugins/catalog-backend-module-gitea/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitea/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-backend-module-gitea +## 0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + ## 0.1.7 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitea/package.json b/plugins/catalog-backend-module-gitea/package.json index 1077d3d050..5992c56171 100644 --- a/plugins/catalog-backend-module-gitea/package.json +++ b/plugins/catalog-backend-module-gitea/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gitea", - "version": "0.1.7", + "version": "0.1.8-next.0", "license": "Apache-2.0", "description": "The gitea backend module for the catalog plugin.", "main": "src/index.ts", diff --git a/plugins/catalog-backend-module-github-org/CHANGELOG.md b/plugins/catalog-backend-module-github-org/CHANGELOG.md index 5d084a5159..1529c9a49b 100644 --- a/plugins/catalog-backend-module-github-org/CHANGELOG.md +++ b/plugins/catalog-backend-module-github-org/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-backend-module-github-org +## 0.3.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.12.1-next.0 + ## 0.3.17 ### Patch Changes diff --git a/plugins/catalog-backend-module-github-org/package.json b/plugins/catalog-backend-module-github-org/package.json index d37a8c7a6e..b5614e5ab0 100644 --- a/plugins/catalog-backend-module-github-org/package.json +++ b/plugins/catalog-backend-module-github-org/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-github-org", - "version": "0.3.17", + "version": "0.3.18-next.0", "description": "The github-org backend module for the catalog plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index 4be66e6d20..de1a33fc6d 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-backend-module-github +## 0.12.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + ## 0.12.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index b37546ca00..cb61e06e9e 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-github", - "version": "0.12.0", + "version": "0.12.1-next.0", "description": "A Backstage catalog backend module that helps integrate towards GitHub", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-gitlab-org/CHANGELOG.md b/plugins/catalog-backend-module-gitlab-org/CHANGELOG.md index 46bb0f16f0..e781626038 100644 --- a/plugins/catalog-backend-module-gitlab-org/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab-org/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-backend-module-gitlab-org +## 0.2.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/plugin-catalog-backend-module-gitlab@0.7.7-next.0 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-events-node@0.4.18 + ## 0.2.16 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab-org/package.json b/plugins/catalog-backend-module-gitlab-org/package.json index 3e20ec5523..3587dd5e5e 100644 --- a/plugins/catalog-backend-module-gitlab-org/package.json +++ b/plugins/catalog-backend-module-gitlab-org/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab-org", - "version": "0.2.16", + "version": "0.2.17-next.0", "description": "The gitlab-org backend module for the catalog plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md index 4be1dc27ae..ffda3d9f15 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-catalog-backend-module-gitlab +## 0.7.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.1 + - @backstage/integration@1.19.2-next.0 + +## 0.7.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/integration@1.19.0 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-events-node@0.4.18 + ## 0.7.6 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index e9f315fb1a..5b4e9a0a16 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab", - "version": "0.7.6", + "version": "0.7.7-next.1", "description": "A Backstage catalog backend module that helps integrate towards GitLab", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md index aec78e3604..f1e8c36d89 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md +++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-incremental-ingestion +## 0.7.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-catalog-backend@3.3.1-next.0 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-common@0.9.3 + ## 0.7.7 ### Patch Changes diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index 0ee8e47652..133cae849e 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/package.json +++ b/plugins/catalog-backend-module-incremental-ingestion/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-incremental-ingestion", - "version": "0.7.7", + "version": "0.7.8-next.0", "description": "An entity provider for streaming large asset sources into the catalog", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-logs/CHANGELOG.md b/plugins/catalog-backend-module-logs/CHANGELOG.md index 6499dc340c..633be5a127 100644 --- a/plugins/catalog-backend-module-logs/CHANGELOG.md +++ b/plugins/catalog-backend-module-logs/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-backend-module-logs +## 0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.6.0 + - @backstage/plugin-catalog-backend@3.3.1-next.0 + - @backstage/plugin-events-node@0.4.18 + ## 0.1.17 ### Patch Changes diff --git a/plugins/catalog-backend-module-logs/package.json b/plugins/catalog-backend-module-logs/package.json index 7202952210..12224abd8a 100644 --- a/plugins/catalog-backend-module-logs/package.json +++ b/plugins/catalog-backend-module-logs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-logs", - "version": "0.1.17", + "version": "0.1.18-next.0", "description": "A module that subscribes to catalog related events and logs them.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md index 031087fe0e..59ad2533d7 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.2.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + ## 0.2.17 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index fa9eddcf3a..ac32292848 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-openapi", - "version": "0.2.17", + "version": "0.2.18-next.0", "description": "A Backstage catalog backend module that helps with OpenAPI specifications", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md b/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md index f1e46d21fc..c17e5817e7 100644 --- a/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md +++ b/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-backend-module-scaffolder-entity-model +## 0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.7.5-next.0 + ## 0.2.15 ### Patch Changes diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/package.json b/plugins/catalog-backend-module-scaffolder-entity-model/package.json index 49d98fd6fc..015bc7a63a 100644 --- a/plugins/catalog-backend-module-scaffolder-entity-model/package.json +++ b/plugins/catalog-backend-module-scaffolder-entity-model/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-scaffolder-entity-model", - "version": "0.2.15", + "version": "0.2.16-next.0", "description": "Adds support for the scaffolder specific entity model (e.g. the Template kind) to the catalog backend plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index 11c45546e9..3d86c0fe35 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-catalog-backend +## 3.3.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + +## 3.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/catalog-client@1.12.1 + - @backstage/catalog-model@1.7.6 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/integration@1.19.0 + - @backstage/types@1.2.2 + - @backstage/plugin-catalog-common@1.1.7 + - @backstage/plugin-catalog-node@1.20.1 + - @backstage/plugin-events-node@0.4.18 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + ## 3.3.0 ### Minor Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 1176fda21b..fccc6aa57c 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend", - "version": "3.3.0", + "version": "3.3.1-next.1", "description": "The Backstage backend plugin that provides the Backstage catalog", "backstage": { "role": "backend-plugin", diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index b97ea7d6a2..41d4d385ea 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-catalog-graph +## 0.5.5-next.1 + +### Patch Changes + +- 5c49a00: Update for the `qs` library bump: the old array limit setting has changed to be more strict; you can no longer just give a zero to mean unlimited. So we choose an arbitrary high value, to at least go higher than the default 20. +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## 0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + ## 0.5.4 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 64b4331356..a9022b6a73 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-graph", - "version": "0.5.4", + "version": "0.5.5-next.1", "backstage": { "role": "frontend-plugin", "pluginId": "catalog-graph", diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/useCatalogGraphPage.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/useCatalogGraphPage.test.tsx index fa3d67520d..fbdfc3743b 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/useCatalogGraphPage.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/useCatalogGraphPage.test.tsx @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { RELATION_MEMBER_OF } from '@backstage/catalog-model'; import { renderHook, waitFor } from '@testing-library/react'; -import { ReactNode } from 'react'; -import { act } from 'react-dom/test-utils'; +import { ReactNode, act } from 'react'; import { BrowserRouter } from 'react-router-dom'; import { Direction } from '../../lib/types'; import { useCatalogGraphPage } from './useCatalogGraphPage'; diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/useCatalogGraphPage.ts b/plugins/catalog-graph/src/components/CatalogGraphPage/useCatalogGraphPage.ts index efc2170153..94329d2c06 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/useCatalogGraphPage.ts +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/useCatalogGraphPage.ts @@ -73,8 +73,10 @@ export function useCatalogGraphPage({ const query = useMemo( () => - (qs.parse(location.search, { arrayLimit: 0, ignoreQueryPrefix: true }) || - {}) as { + (qs.parse(location.search, { + arrayLimit: 10000, + ignoreQueryPrefix: true, + }) || {}) as { selectedRelations?: string[] | string; selectedKinds?: string[] | string; rootEntityRefs?: string[] | string; diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index 9e25364a9c..3e9b459d5f 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-catalog-import +## 0.13.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + +## 0.13.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + ## 0.13.8 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index e9d25876af..02465093c1 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-import", - "version": "0.13.8", + "version": "0.13.9-next.1", "description": "A Backstage plugin the helps you import entities into your catalog", "backstage": { "role": "frontend-plugin", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index c66c5767ae..694ab0b391 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-catalog-react +## 1.21.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + +## 1.21.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration-react@1.2.14-next.0 + - @backstage/frontend-test-utils@0.4.3-next.0 + - @backstage/core-compat-api@0.5.6-next.0 + - @backstage/frontend-plugin-api@0.13.2 + ## 1.21.4 ### Patch Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index bfd4e11738..c778f09ae5 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-react", - "version": "1.21.4", + "version": "1.21.5-next.1", "description": "A frontend library that helps other Backstage plugins interact with the catalog", "backstage": { "role": "web-library", diff --git a/plugins/catalog-unprocessed-entities/CHANGELOG.md b/plugins/catalog-unprocessed-entities/CHANGELOG.md index 47be6beb8b..4e49a85fe6 100644 --- a/plugins/catalog-unprocessed-entities/CHANGELOG.md +++ b/plugins/catalog-unprocessed-entities/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-unprocessed-entities +## 0.2.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + ## 0.2.24 ### Patch Changes diff --git a/plugins/catalog-unprocessed-entities/package.json b/plugins/catalog-unprocessed-entities/package.json index 016018b93f..de923b790d 100644 --- a/plugins/catalog-unprocessed-entities/package.json +++ b/plugins/catalog-unprocessed-entities/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-unprocessed-entities", - "version": "0.2.24", + "version": "0.2.25-next.0", "backstage": { "role": "frontend-plugin", "pluginId": "catalog-unprocessed-entities", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index 89f9bcdefe..7e781e1138 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-catalog +## 1.32.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-search-react@1.10.2-next.0 + - @backstage/plugin-techdocs-react@1.3.7-next.0 + +## 1.32.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration-react@1.2.14-next.0 + - @backstage/plugin-scaffolder-common@1.7.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/core-compat-api@0.5.6-next.0 + - @backstage/frontend-plugin-api@0.13.2 + - @backstage/plugin-search-react@1.10.1 + ## 1.32.1 ### Patch Changes diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index f2e4e1f610..737922ba44 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog", - "version": "1.32.1", + "version": "1.32.2-next.1", "description": "The Backstage plugin for browsing the Backstage catalog", "backstage": { "role": "frontend-plugin", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index 1329d91732..7de91e9448 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-config-schema +## 0.1.76-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + ## 0.1.75 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 46b051aca6..0e2a56ea92 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-config-schema", - "version": "0.1.75", + "version": "0.1.76-next.0", "description": "A Backstage plugin that lets you browse the configuration schema of your app", "backstage": { "role": "frontend-plugin", diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md index 1f3e04d742..0dc5503884 100644 --- a/plugins/devtools-backend/CHANGELOG.md +++ b/plugins/devtools-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-devtools-backend +## 0.5.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.14.1-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/cli-common@0.1.16 + - @backstage/config@1.3.6 + - @backstage/config-loader@1.10.7 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-devtools-common@0.1.20 + - @backstage/plugin-permission-common@0.9.3 + - @backstage/plugin-permission-node@0.10.7 + ## 0.5.12 ### Patch Changes diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index 36a476f4fb..23c41c6d9d 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools-backend", - "version": "0.5.12", + "version": "0.5.13-next.0", "backstage": { "role": "backend-plugin", "pluginId": "devtools", diff --git a/plugins/devtools/CHANGELOG.md b/plugins/devtools/CHANGELOG.md index 8d842ef87a..c31089d02c 100644 --- a/plugins/devtools/CHANGELOG.md +++ b/plugins/devtools/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-devtools +## 0.1.35-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + +## 0.1.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-compat-api@0.5.6-next.0 + - @backstage/frontend-plugin-api@0.13.2 + ## 0.1.34 ### Patch Changes diff --git a/plugins/devtools/package.json b/plugins/devtools/package.json index 224b5e4b88..fb9deadfb9 100644 --- a/plugins/devtools/package.json +++ b/plugins/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools", - "version": "0.1.34", + "version": "0.1.35-next.1", "backstage": { "role": "frontend-plugin", "pluginId": "devtools", diff --git a/plugins/events-backend-module-github/CHANGELOG.md b/plugins/events-backend-module-github/CHANGELOG.md index edff58b374..8980120bab 100644 --- a/plugins/events-backend-module-github/CHANGELOG.md +++ b/plugins/events-backend-module-github/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-backend-module-github +## 0.4.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.19.2-next.0 + ## 0.4.7 ### Patch Changes diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json index 83513f30df..02d50f8e0d 100644 --- a/plugins/events-backend-module-github/package.json +++ b/plugins/events-backend-module-github/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-github", - "version": "0.4.7", + "version": "0.4.8-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "events", diff --git a/plugins/events-backend/CHANGELOG.md b/plugins/events-backend/CHANGELOG.md index 125b47b0d3..d504f3fdaf 100644 --- a/plugins/events-backend/CHANGELOG.md +++ b/plugins/events-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-events-backend +## 0.5.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.6.5-next.0 + - @backstage/backend-plugin-api@1.6.0 + - @backstage/config@1.3.6 + - @backstage/errors@1.2.7 + - @backstage/types@1.2.2 + - @backstage/plugin-events-node@0.4.18 + ## 0.5.9 ### Patch Changes diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json index 6ca5532424..5089655b6e 100644 --- a/plugins/events-backend/package.json +++ b/plugins/events-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend", - "version": "0.5.9", + "version": "0.5.10-next.0", "backstage": { "role": "backend-plugin", "pluginId": "events", diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index 798fa8df02..0ba824b2e5 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,12 @@ # @internal/plugin-todo-list +## 1.0.47-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + ## 1.0.46 ### Patch Changes diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index ad138b4713..cecfa8d665 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list", - "version": "1.0.46", + "version": "1.0.47-next.0", "backstage": { "role": "frontend-plugin", "pluginId": "todo-list", diff --git a/plugins/home-react/CHANGELOG.md b/plugins/home-react/CHANGELOG.md index 81c9fbc1be..0c8f4ac34e 100644 --- a/plugins/home-react/CHANGELOG.md +++ b/plugins/home-react/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-home-react +## 0.1.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + ## 0.1.33 ### Patch Changes diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json index 8f69f7eab7..087c5319df 100644 --- a/plugins/home-react/package.json +++ b/plugins/home-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-home-react", - "version": "0.1.33", + "version": "0.1.34-next.0", "description": "A Backstage plugin that contains react components helps you build a home page", "backstage": { "role": "web-library", diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index 6a1cbcd825..322614de2c 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-home +## 0.8.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.18.5-next.0 + - @backstage/plugin-catalog-react@1.21.5-next.1 + - @backstage/plugin-home-react@0.1.34-next.0 + +## 0.8.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.21.5-next.0 + - @backstage/frontend-plugin-api@0.13.2 + ## 0.8.15 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index 5716626c36..b2c5ef75ac 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-home", - "version": "0.8.15", + "version": "0.8.16-next.1", "description": "A Backstage plugin that helps you build a home page", "backstage": { "role": "frontend-plugin", diff --git a/plugins/home/report-alpha.api.md b/plugins/home/report-alpha.api.md index 58ceef751d..6344805372 100644 --- a/plugins/home/report-alpha.api.md +++ b/plugins/home/report-alpha.api.md @@ -107,6 +107,7 @@ export const homeTranslationRef: TranslationRef< { readonly 'starredEntities.noStarredEntitiesMessage': 'Click the star beside an entity name to add it to this list!'; readonly 'addWidgetDialog.title': 'Add new widget to dashboard'; + readonly 'customHomepageButtons.cancel': 'Cancel'; readonly 'customHomepageButtons.clearAll': 'Clear all'; readonly 'customHomepageButtons.edit': 'Edit'; readonly 'customHomepageButtons.restoreDefaults': 'Restore defaults'; diff --git a/plugins/home/src/components/CustomHomepage/CustomHomepageButtons.tsx b/plugins/home/src/components/CustomHomepage/CustomHomepageButtons.tsx index 0496e923de..b7e397c995 100644 --- a/plugins/home/src/components/CustomHomepage/CustomHomepageButtons.tsx +++ b/plugins/home/src/components/CustomHomepage/CustomHomepageButtons.tsx @@ -45,6 +45,7 @@ interface CustomHomepageButtonsProps { changeEditMode: (mode: boolean) => void; defaultConfigAvailable: boolean; restoreDefault: () => void; + cancel: () => void; } export const CustomHomepageButtons = (props: CustomHomepageButtonsProps) => { const { @@ -55,6 +56,7 @@ export const CustomHomepageButtons = (props: CustomHomepageButtonsProps) => { changeEditMode, defaultConfigAvailable, restoreDefault, + cancel, } = props; const styles = useStyles(); const { t } = useTranslationRef(homeTranslationRef); @@ -73,6 +75,9 @@ export const CustomHomepageButtons = (props: CustomHomepageButtonsProps) => { ) : ( <> + {defaultConfigAvailable && (