,
+ ),
+ ];
+ },
+});
+```
diff --git a/.changeset/red-radios-promise.md b/.changeset/red-radios-promise.md
new file mode 100644
index 0000000000..ea876c3480
--- /dev/null
+++ b/.changeset/red-radios-promise.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-gitlab': patch
+---
+
+Adds new optional `excludeRepos` configuration option to the Gitlab catalog provider.
diff --git a/.changeset/renovate-f04beb1.md b/.changeset/renovate-f04beb1.md
new file mode 100644
index 0000000000..12d24ccc53
--- /dev/null
+++ b/.changeset/renovate-f04beb1.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-search-backend-module-explore': patch
+---
+
+Updated dependency `@backstage-community/plugin-explore-common` to `^0.0.4`.
diff --git a/.changeset/seven-eggs-admire.md b/.changeset/seven-eggs-admire.md
new file mode 100644
index 0000000000..d68b38e2d7
--- /dev/null
+++ b/.changeset/seven-eggs-admire.md
@@ -0,0 +1,5 @@
+---
+'@backstage/create-app': patch
+---
+
+Updated dockerfile and `app-config.production.yaml` to make it easier to get started with example data
diff --git a/.changeset/shaggy-dodos-applaud.md b/.changeset/shaggy-dodos-applaud.md
new file mode 100644
index 0000000000..b7f968aa39
--- /dev/null
+++ b/.changeset/shaggy-dodos-applaud.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Switched the target from `'ES2022'` to `'es2022'` for better compatibility with older versions of `swc`.
diff --git a/.changeset/smooth-countries-relate.md b/.changeset/smooth-countries-relate.md
new file mode 100644
index 0000000000..5e86ee8ab5
--- /dev/null
+++ b/.changeset/smooth-countries-relate.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-graph': patch
+---
+
+Use `entityPresentationApi` for the node title and the icon.
diff --git a/.changeset/spicy-lies-listen.md b/.changeset/spicy-lies-listen.md
new file mode 100644
index 0000000000..6bc5e95846
--- /dev/null
+++ b/.changeset/spicy-lies-listen.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Fix helper text margin for scaffolder EntityNamePicker and EntityTagsPicker when using outlined text field
diff --git a/.changeset/spicy-planets-provide.md b/.changeset/spicy-planets-provide.md
new file mode 100644
index 0000000000..f2929df850
--- /dev/null
+++ b/.changeset/spicy-planets-provide.md
@@ -0,0 +1,46 @@
+---
+'@backstage/plugin-notifications-backend-module-email': minor
+---
+
+**BREAKING** Following `NotificationTemplateRenderer` methods now return a Promise and **must** be awaited: `getSubject`, `getText` and `getHtml`.
+
+Required changes and example usage:
+
+```diff
+import { notificationsEmailTemplateExtensionPoint } from '@backstage/plugin-notifications-backend-module-email';
+import { Notification } from '@backstage/plugin-notifications-common';
++import { getNotificationSubject, getNotificationTextContent, getNotificationHtmlContent } from 'my-notification-processing-library`
+export const notificationsModuleEmailDecorator = createBackendModule({
+ pluginId: 'notifications',
+ moduleId: 'email.templates',
+ register(reg) {
+ reg.registerInit({
+ deps: {
+ emailTemplates: notificationsEmailTemplateExtensionPoint,
+ },
+ async init({ emailTemplates }) {
+ emailTemplates.setTemplateRenderer({
+- getSubject(notification) {
++ async getSubject(notification) {
+- return `New notification from ${notification.source}`;
++ const subject = await getNotificationSubject(notification);
++ return `New notification from ${subject}`;
+ },
+- getText(notification) {
++ async getText(notification) {
+- return notification.content;
++ const text = await getNotificationTextContent(notification);
++ return text;
+ },
+- getHtml(notification) {
++ async getHtml(notification) {
+- return `
${notification.content}
`;
++ const html = await getNotificationHtmlContent(notification);
++ return html;
+ },
+ });
+ },
+ });
+ },
+});
+```
diff --git a/.changeset/sweet-oranges-buy.md b/.changeset/sweet-oranges-buy.md
new file mode 100644
index 0000000000..d9f3343e3d
--- /dev/null
+++ b/.changeset/sweet-oranges-buy.md
@@ -0,0 +1,5 @@
+---
+'@backstage/frontend-plugin-api': patch
+---
+
+Added support to be able to define `zod` config schema in Blueprints, with built in schema merging from the Blueprint and the extension instances.
diff --git a/.changeset/tall-snakes-fix.md b/.changeset/tall-snakes-fix.md
new file mode 100644
index 0000000000..351c781375
--- /dev/null
+++ b/.changeset/tall-snakes-fix.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-plugin-api': patch
+---
+
+fix typo in `getPluginRequestToken` comments
diff --git a/.changeset/thick-hotels-know.md b/.changeset/thick-hotels-know.md
new file mode 100644
index 0000000000..f0c7129256
--- /dev/null
+++ b/.changeset/thick-hotels-know.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Fix scaffolder action `catalog:write` to write to directories that don't already exist
diff --git a/.changeset/two-emus-work.md b/.changeset/two-emus-work.md
new file mode 100644
index 0000000000..3c60086043
--- /dev/null
+++ b/.changeset/two-emus-work.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+New command now supports setting package license
diff --git a/.changeset/young-games-visit.md b/.changeset/young-games-visit.md
new file mode 100644
index 0000000000..467abcec86
--- /dev/null
+++ b/.changeset/young-games-visit.md
@@ -0,0 +1,14 @@
+---
+'@backstage/frontend-plugin-api': patch
+'@backstage/frontend-test-utils': patch
+'@backstage/frontend-app-api': patch
+'@backstage/core-compat-api': patch
+'@backstage/plugin-catalog-react': patch
+'@backstage/plugin-user-settings': patch
+'@backstage/plugin-search-react': patch
+'@backstage/plugin-techdocs': patch
+'@backstage/plugin-catalog': patch
+'@backstage/plugin-search': patch
+---
+
+Added config input type to the extensions
diff --git a/.changeset/young-peaches-shake.md b/.changeset/young-peaches-shake.md
new file mode 100644
index 0000000000..75c93f8f3b
--- /dev/null
+++ b/.changeset/young-peaches-shake.md
@@ -0,0 +1,5 @@
+---
+'@backstage/config-loader': minor
+---
+
+Add configuration key to File and Remote `ConfigSource`s that enables configuration of parsing logic. Previously limited to yaml, these `ConfigSource`s now allow for a multitude of parsing options (e.g. JSON).
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 9cd3bc0690..a0c83a42bd 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -9,10 +9,10 @@ yarn.lock @backstage/maintainers @backst
*/yarn.lock @backstage/maintainers @backstage-service
/.changeset/*.md
/beps/0001-notifications-system @backstage/maintainers @backstage/notifications-maintainers
-/docs/assets/search @backstage/discoverability-maintainers
-/docs/features/search @backstage/discoverability-maintainers
+/docs/assets/search @backstage/search-maintainers
+/docs/features/search @backstage/search-maintainers
/docs/features/techdocs @backstage/techdocs-maintainers
-/docs/plugins/integrating-search-into-plugins.md @backstage/discoverability-maintainers
+/docs/plugins/integrating-search-into-plugins.md @backstage/search-maintainers
/packages/cli/src/commands/onboard @backstage/sharks
/packages/backend-openapi-utils @backstage/maintainers @backstage/reviewers @backstage/openapi-tooling-maintainers
/packages/techdocs-cli @backstage/techdocs-maintainers
@@ -50,8 +50,8 @@ yarn.lock @backstage/maintainers @backst
/plugins/explore-react @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
/plugins/fossa @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
/plugins/git-release-manager @backstage/maintainers @backstage/reviewers @erikengervall
-/plugins/home @backstage/discoverability-maintainers
-/plugins/home-* @backstage/discoverability-maintainers
+/plugins/home @backstage/home-maintainers
+/plugins/home-* @backstage/home-maintainers
/plugins/kafka @backstage/maintainers @backstage/reviewers @andrewthauer
/plugins/kafka-backend @backstage/maintainers @backstage/reviewers @andrewthauer
/plugins/kubernetes @backstage/kubernetes-maintainers
@@ -70,13 +70,11 @@ yarn.lock @backstage/maintainers @backst
/plugins/rollbar-backend @backstage/maintainers @backstage/reviewers @andrewthauer
/plugins/scaffolder @backstage/maintainers @backstage/reviewers @backstage/scaffolder-maintainers
/plugins/scaffolder-* @backstage/maintainers @backstage/reviewers @backstage/scaffolder-maintainers
-/plugins/search @backstage/discoverability-maintainers
-/plugins/search-* @backstage/discoverability-maintainers
+/plugins/search @backstage/search-maintainers
+/plugins/search-* @backstage/search-maintainers
/plugins/signals @backstage/maintainers @backstage/notifications-maintainers
/plugins/signals-* @backstage/maintainers @backstage/notifications-maintainers
/plugins/sonarqube @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
-/plugins/stack-overflow @backstage/discoverability-maintainers
-/plugins/stack-overflow-backend @backstage/discoverability-maintainers
/plugins/techdocs @backstage/techdocs-maintainers
/plugins/techdocs-* @backstage/techdocs-maintainers
/plugins/user-settings-backend @backstage/maintainers @backstage/reviewers @backstage/sda-se-reviewers
diff --git a/.github/issue-labeler.yml b/.github/issue-labeler.yml
index 6d74ce8902..c6c6ef115f 100644
--- a/.github/issue-labeler.yml
+++ b/.github/issue-labeler.yml
@@ -1,6 +1,6 @@
area:techdocs:
- '/(techdocs|tech-docs|tech docs)/i'
-area:discoverability:
+area:search:
- '/search/i'
area:events:
- '/events/i'
diff --git a/.github/labeler.yml b/.github/labeler.yml
index a58da1d2f7..e6568091b8 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -4,7 +4,11 @@ area:catalog:
- plugins/catalog/**/*
- plugins/catalog-*/**/*
- packages/catalog-*/**/*
-area:discoverability: # search + home
+area:home:
+ - changed-files:
+ - any-glob-to-any-file:
+ - plugins/home/**/*
+area:search:
- changed-files:
- any-glob-to-any-file:
- plugins/search/**/*
diff --git a/.github/workflows/api-breaking-changes.yml b/.github/workflows/api-breaking-changes.yml
index e334a29b82..c39fdf7f7c 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@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 18.x
registry-url: https://registry.npmjs.org/
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 135076ba40..168d6205e4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -35,7 +35,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
@@ -71,7 +71,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
@@ -216,7 +216,7 @@ jobs:
run: git fetch origin ${{ github.event.pull_request.base.ref }}
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
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 8b4709337a..9f305f9a20 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@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
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 a0cdae5774..eafa4a8fcd 100644
--- a/.github/workflows/deploy_microsite.yml
+++ b/.github/workflows/deploy_microsite.yml
@@ -31,7 +31,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js 18.x
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 18.x
registry-url: https://registry.npmjs.org/ # Needed for auth
@@ -66,7 +66,7 @@ jobs:
run: ls microsite/build && ls microsite/build/storybook
- name: Deploy both microsite and storybook to gh-pages
- uses: JamesIves/github-pages-deploy-action@5c6e9e9f3672ce8fd37b9856193d2a537941e66c # v4.6.1
+ uses: JamesIves/github-pages-deploy-action@94f3c658273cf92fb48ef99e5fbc02bd2dc642b2 # v4.6.3
with:
branch: gh-pages
folder: microsite/build
diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml
index db9489dbb8..5488b9a189 100644
--- a/.github/workflows/deploy_nightly.yml
+++ b/.github/workflows/deploy_nightly.yml
@@ -22,7 +22,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js 18.x
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 18.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 81e95fab97..7ae5637986 100644
--- a/.github/workflows/deploy_packages.yml
+++ b/.github/workflows/deploy_packages.yml
@@ -77,7 +77,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
@@ -161,7 +161,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
diff --git a/.github/workflows/pr-review-comment-trigger.yaml b/.github/workflows/pr-review-comment-trigger.yaml
index ccf02d5aee..d6f36da686 100644
--- a/.github/workflows/pr-review-comment-trigger.yaml
+++ b/.github/workflows/pr-review-comment-trigger.yaml
@@ -30,7 +30,7 @@ jobs:
run: |
mkdir -p ./pr
echo $PR_NUMBER > ./pr/pr_number
- - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
+ - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
with:
name: pr_number-${{ github.event.pull_request.number }}
path: pr/
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index ecf18d71ad..4ef8cc7181 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -58,7 +58,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: 'Upload artifact'
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
+ uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
with:
name: SARIF file
path: results.sarif
@@ -67,6 +67,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: 'Upload to code-scanning'
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
with:
sarif_file: results.sarif
diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml
index 9886c94830..da6bd2592d 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@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node-version }}
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 6d02309f8a..62dd7e0c13 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 18.x
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 18.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 1cdc0cb22a..af2e4da251 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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js 18.x
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 18.x
registry-url: https://registry.npmjs.org/ # Needed for auth
@@ -29,7 +29,7 @@ jobs:
cache-prefix: ${{ runner.os }}-v18.x
- name: Create Snyk report
- uses: snyk/actions/node@640e31719aac3e44867d239dc86c20c3e34c8e4f # master
+ uses: snyk/actions/node@6312a53377a551c0258438bf25fb8f378afbc977 # master
continue-on-error: true # Snyk CLI exits with error when vulnerabilities are found
with:
args: >
diff --git a/.github/workflows/sync_snyk-monitor.yml b/.github/workflows/sync_snyk-monitor.yml
index b1e50397ce..1bdf0d30cf 100644
--- a/.github/workflows/sync_snyk-monitor.yml
+++ b/.github/workflows/sync_snyk-monitor.yml
@@ -31,7 +31,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Monitor and Synchronize Snyk Policies
- uses: snyk/actions/node@640e31719aac3e44867d239dc86c20c3e34c8e4f # master
+ uses: snyk/actions/node@6312a53377a551c0258438bf25fb8f378afbc977 # master
with:
command: monitor
args: >
@@ -46,7 +46,7 @@ jobs:
# Above we run the `monitor` command, this runs the `test` command which is
# the one that generates the SARIF report that we can upload to GitHub.
- name: Create Snyk report
- uses: snyk/actions/node@640e31719aac3e44867d239dc86c20c3e34c8e4f # master
+ uses: snyk/actions/node@6312a53377a551c0258438bf25fb8f378afbc977 # master
continue-on-error: true # To make sure that SARIF upload gets called
with:
args: >
@@ -58,6 +58,6 @@ jobs:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
NODE_OPTIONS: --max-old-space-size=7168
- name: Upload Snyk report
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
with:
sarif_file: snyk.sarif
diff --git a/.github/workflows/verify_accessibility.yml b/.github/workflows/verify_accessibility.yml
index bb46bbd4c1..386306dcb1 100644
--- a/.github/workflows/verify_accessibility.yml
+++ b/.github/workflows/verify_accessibility.yml
@@ -26,7 +26,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js 18.x
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 18.x
- name: yarn install
diff --git a/.github/workflows/verify_codeql.yml b/.github/workflows/verify_codeql.yml
index e19187b6ce..b2fb2dc6ec 100644
--- a/.github/workflows/verify_codeql.yml
+++ b/.github/workflows/verify_codeql.yml
@@ -55,7 +55,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/init@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -66,7 +66,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/autobuild@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
# âšī¸ Command-line programs to run using the OS shell.
# đ https://git.io/JvXDl
@@ -80,4 +80,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/analyze@5cf07d8b700b67e235fbb65cbc84f69c0cf10464 # v3.25.14
diff --git a/.github/workflows/verify_e2e-kubernetes.yml b/.github/workflows/verify_e2e-kubernetes.yml
index b7465945ea..4647505cbf 100644
--- a/.github/workflows/verify_e2e-kubernetes.yml
+++ b/.github/workflows/verify_e2e-kubernetes.yml
@@ -29,7 +29,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
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 d6491f1e3c..fa303ce1c6 100644
--- a/.github/workflows/verify_e2e-linux.yml
+++ b/.github/workflows/verify_e2e-linux.yml
@@ -53,7 +53,7 @@ jobs:
git config --global user.name 'GitHub e2e user'
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml
index d7575cadf7..bc782c4bd3 100644
--- a/.github/workflows/verify_e2e-windows.yml
+++ b/.github/workflows/verify_e2e-windows.yml
@@ -50,7 +50,7 @@ jobs:
git config --global user.name 'GitHub e2e user'
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
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 1a5bc8075b..08dcddde8e 100644
--- a/.github/workflows/verify_microsite.yml
+++ b/.github/workflows/verify_microsite.yml
@@ -31,7 +31,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js 18.x
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 18.x
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
diff --git a/.github/workflows/verify_microsite_accessibility.yml b/.github/workflows/verify_microsite_accessibility.yml
index c9ed1696cd..220e2633c3 100644
--- a/.github/workflows/verify_microsite_accessibility.yml
+++ b/.github/workflows/verify_microsite_accessibility.yml
@@ -22,7 +22,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Use Node.js 18.x
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 18.x
diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml
index 83ddac8429..2f93b67616 100644
--- a/.github/workflows/verify_storybook.yml
+++ b/.github/workflows/verify_storybook.yml
@@ -37,7 +37,7 @@ jobs:
fetch-depth: 0 # Required to retrieve git history
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml
index 736193cad6..109e2ee96e 100644
--- a/.github/workflows/verify_windows.yml
+++ b/.github/workflows/verify_windows.yml
@@ -36,7 +36,7 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: use node.js ${{ matrix.node-version }}
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
diff --git a/ADOPTERS.md b/ADOPTERS.md
index 870b4c93d4..3b534052f1 100644
--- a/ADOPTERS.md
+++ b/ADOPTERS.md
@@ -274,3 +274,4 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
| [Grupo OLX](https://www.olx.com.br/) | [@marciorgb](https://github.com/marciorgb), [@jeffbraga](https://github.com/jeffbraga), [@rogerfernandes](https://github.com/rogerfernandes), [@stockrt](https://github.com/stockrt) | At Grupo OLX, we are using Backstage to reduce friction and enhance developer autonomy by creating Golden Paths, which automate previously manual processes. Additionally, Backstage's catalog integrates various views of our organizational structure and workflows, offering a comprehensive overview of how different components interconnect. |
| [DPG Media](https://www.dpgmediagroup.com) | [@benjidotsh](https://github.com/benjidotsh), [@lvstb](https://github.com/lvstb), [@ssliman](https://github.com/ssliman), [@edewel-beep](https://github.com/edewel-beep) | Access to infrastructure, documentation and internal tooling |
| [Baloise](https://www.baloise.ch) | [@dweber019](https://github.com/dweber019), [@mikevader](https://github.com/mikevader) | We are using Backstage as internal developer protal for use cases like software catalog, documentation, infrastructure. |
+| [Cigna](https://www.cigna.com/) / [Evernorth](https://www.evernorth.com/) | [@raphtalia](https://github.com/raphtalia), [Devon Paluso](mailto:Devon.Paluso@evernorth.com), [Bryan Rego](mailto:Bryan.Rego@evernorth.com), [Ian Skillings](mailto:Ian.Skillings@evernorth.com) | Internal developer portal providing TechDocs, software templates, centralized secret management, with information consolidation from ServiceNow, Okta, GitHub, GitLab, and WebEx. |
diff --git a/OWNERS.md b/OWNERS.md
index 5012181d21..b145205539 100644
--- a/OWNERS.md
+++ b/OWNERS.md
@@ -32,11 +32,11 @@ Scope: The catalog plugin and catalog model
| Patrik Oldsberg | Spotify | Cubic Belugas | [Rugvip](https://github.com/Rugvip) | `Rugvip#0019` |
| Vincenzo Scamporlino | Spotify | Cubic Belugas | [vinzscam](http://github.com/vinzscam) | `vinzscam#6944` |
-### Discoverability
+### Home
-Team: @backstage/discoverability-maintainers
+Team: @backstage/home-maintainers
-Scope: Discoverability within Backstage, including the home page, information architecture, and search
+Scope: The Backstage home page and information architecture
| Name | Organization | Team | GitHub | Discord |
| ------------------------ | ------------ | -------------- | ---------------------------------------- | ----------------- |
@@ -46,6 +46,18 @@ Scope: Discoverability within Backstage, including the home page, information ar
| Raghunandan Balachandran | Spotify | Infinite Buck$ | [soapraj](http://github.com/soapraj) | raghunandanb#1114 |
| Bailey Brooks | Spotify | Infinite Buck$ | [bailey](http://github.com/bailey) | \_bailey4 |
+### Search
+
+Team: @backstage/search-maintainers
+
+Scope: The Backstage Search plugin
+
+| Name | Organization | Team | GitHub | Discord |
+| ------------------------ | ------------ | -------------- | --------------------------------------------- | ----------------- |
+| Emma Indal | Spotify | Infinite Buck$ | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 |
+| Raghunandan Balachandran | Spotify | Infinite Buck$ | [soapraj](http://github.com/soapraj) | raghunandanb#1114 |
+| Alex Lorenzi | Spotify | ProTean | [AlexLorenzi](https://github.com/AlexLorenzi) | alexlorenzi |
+
### Helm Charts
Team: @backstage/helm-chart-maintainers
diff --git a/docs/assets/auth/github-provider-not-configured-to-support-sign-in.png b/docs/assets/auth/github-provider-not-configured-to-support-sign-in.png
new file mode 100644
index 0000000000..1bbd94ecc3
Binary files /dev/null and b/docs/assets/auth/github-provider-not-configured-to-support-sign-in.png differ
diff --git a/docs/assets/auth/github-unable-to-reolve-identity.png b/docs/assets/auth/github-unable-to-reolve-identity.png
new file mode 100644
index 0000000000..622fd75a4a
Binary files /dev/null and b/docs/assets/auth/github-unable-to-reolve-identity.png differ
diff --git a/docs/auth/identity-resolver.md b/docs/auth/identity-resolver.md
index 5efb592270..6eb52e5708 100644
--- a/docs/auth/identity-resolver.md
+++ b/docs/auth/identity-resolver.md
@@ -403,3 +403,22 @@ const customAuth = createBackendModule({
```
Remember to `backend.add` the created module just like above.
+
+## Common Sign-In Resolver Errors
+
+There are two common Sign-In Resolver errors you might run into.
+
+First is: "The 'Auth Provider Name' provider is not configured to support sign-in". Here is what this looks like for the GitHub Auth provider:
+
+
+
+This error can be caused by the following:
+
+- The `signIn.resolvers` have not be added to your Auth Provider configuration. Adding this will resolve the error.
+- There is a syntax error in your Auth Provider configuration. Running `yarn backstage-cli config:check --strict` will help identify the syntax error.
+
+The second common error is: "Failed to sign-in, unable to resolve user identity". Here is what this looks like for the GitHub Auth provider:
+
+
+
+This error is caused by the Sign-In Resolver you configured being unable to find a matching User in the Catalog. To fix this you need to import User, and Group, data from some source of truth for this data at your Organization. To do this you can use one of the existing Org Data providers like the ones for [Entra ID (Azure AD/MS Graph)](../integrations/azure/org.md), [GitHub](../integrations/github/org.md), [GitLab](../integrations/gitlab/org.md), etc. or if none of those fit your needs you can create a [Custom Entity Provider](../features/software-catalog/external-integrations.md#custom-entity-providers).
diff --git a/docs/backend-system/building-backends/08-migrating.md b/docs/backend-system/building-backends/08-migrating.md
index c6db44078e..67104c7ba9 100644
--- a/docs/backend-system/building-backends/08-migrating.md
+++ b/docs/backend-system/building-backends/08-migrating.md
@@ -497,7 +497,7 @@ catalog:
providers:
githubOrg:
- id: production
- githubUrl: 'https://github.com',
+ githubUrl: 'https://github.com'
orgs: ['backstage']
schedule:
frequency: PT30M
@@ -536,8 +536,8 @@ catalog:
providers:
githubOrg:
- id: production
- githubUrl: 'https://github.com',
- orgs: ['org-a', 'org-b'],
+ githubUrl: 'https://github.com'
+ orgs: ['org-a', 'org-b']
schedule:
frequency: PT30M
timeout: PT15M
diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md
index 154f68c7d1..d47cb248f8 100644
--- a/docs/deployment/docker.md
+++ b/docs/deployment/docker.md
@@ -92,11 +92,14 @@ RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz
RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \
yarn install --frozen-lockfile --production --network-timeout 300000
+# This will include the examples, if you don't need these simply remove this line
+COPY --chown=node:node examples ./examples
+
# Then copy the rest of the backend bundle, along with any other files we might want.
COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./
RUN tar xzf bundle.tar.gz && rm bundle.tar.gz
-CMD ["node", "packages/backend", "--config", "app-config.yaml"]
+CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"]
```
For more details on how the `backend:bundle` command and the `skeleton.tar.gz`
@@ -251,12 +254,15 @@ RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid
COPY --from=build --chown=node:node /app/packages/backend/dist/bundle/ ./
# Copy any other files that we need at runtime
-COPY --chown=node:node app-config.yaml ./
+COPY --chown=node:node app-config*.yaml ./
+
+# This will include the examples, if you don't need these simply remove this line
+COPY --chown=node:node examples ./examples
# This switches many Node.js dependencies to production mode.
ENV NODE_ENV production
-CMD ["node", "packages/backend", "--config", "app-config.yaml"]
+CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"]
```
Note that a newly created Backstage app will typically not have a `plugins/`
@@ -277,6 +283,7 @@ packages/*/dist
packages/*/node_modules
plugins/*/dist
plugins/*/node_modules
+*.local.yaml
```
Once you have added both the `Dockerfile` and `.dockerignore` to the root of
@@ -312,14 +319,12 @@ first step in doing so is to remove the `app-backend` plugin from the backend
package, which is done as follows:
1. Delete `packages/backend/src/plugins/app.ts`
-2. Remove the following lines from `packages/backend/src/index.ts`:
- ```tsx
- import app from './plugins/app';
- // ...
- const appEnv = useHotMemoize(module, () => createEnv('app'));
- // ...
- .addRouter('', await app(appEnv));
+2. Remove the following line from `packages/backend/src/index.ts`:
+
+ ```ts
+ backend.add(import('@backstage/plugin-app-backend/alpha'));
```
+
3. Remove the `@backstage/plugin-app-backend` and the app package dependency
(e.g. `app`) from `packages/backend/package.json`. If you don't remove the
app package dependency the app will still be built and bundled with the
diff --git a/docs/deployment/heroku.md b/docs/deployment/heroku.md
index d285e4b397..51d0b4b439 100644
--- a/docs/deployment/heroku.md
+++ b/docs/deployment/heroku.md
@@ -104,7 +104,7 @@ heroku open -a
View logs:
```shell
-heroku heroku -a
+heroku logs -a
```
## Docker
diff --git a/docs/features/software-catalog/configuration.md b/docs/features/software-catalog/configuration.md
index 17d5f49205..67382aa6ce 100644
--- a/docs/features/software-catalog/configuration.md
+++ b/docs/features/software-catalog/configuration.md
@@ -58,6 +58,20 @@ catalog:
target: ../../examples/all.yaml
```
+:::note
+There might be cases where you need to test some `file` configurations in a Docker container. In a case like this, as the backend is serving the frontend in a default setup, the path would be from the root. Also, you need to **make sure to copy your files into your container**.
+
+Using the example above that would look like this:
+
+```yaml
+catalog:
+ locations:
+ - type: file
+ target: ./examples/all.yaml
+```
+
+:::
+
### Integration Processors
Integrations may simply provide a mechanism to handle `url` location type for an
diff --git a/docs/getting-started/config/authentication.md b/docs/getting-started/config/authentication.md
index 874964696a..e97ed3d89c 100644
--- a/docs/getting-started/config/authentication.md
+++ b/docs/getting-started/config/authentication.md
@@ -50,7 +50,6 @@ Open `packages/app/src/App.tsx` and below the last `import` line, add:
```typescript title="packages/app/src/App.tsx"
import { githubAuthApiRef } from '@backstage/core-plugin-api';
-import { SignInPage } from '@backstage/core-components';
```
Search for `const app = createApp({` in this file, and below `apis,` add:
diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md
index 99fdb3d8ed..8bb30d1db8 100644
--- a/docs/getting-started/index.md
+++ b/docs/getting-started/index.md
@@ -1,6 +1,6 @@
---
id: index
-title: Installing a standalone server
+title: Creating your Backstage App
sidebar_label: Introduction
description: How to install Backstage for your own use.
---
diff --git a/docs/integrations/gerrit/discovery--old.md b/docs/integrations/gerrit/discovery--old.md
new file mode 100644
index 0000000000..250de80bdf
--- /dev/null
+++ b/docs/integrations/gerrit/discovery--old.md
@@ -0,0 +1,73 @@
+---
+id: discovery--old
+title: Gerrit Discovery
+sidebar_label: Discovery
+# prettier-ignore
+description: Automatically discovering catalog entities from Gerrit repositories
+---
+
+:::info
+This documentation is written for the old backend which has been replaced by [the new backend system](../../backend-system/index.md), being the default since Backstage [version 1.24](../../releases/v1.24.0.md). If have migrated to the new backend system, you may want to read [its own article](./discovery.md) instead. Otherwise, [consider migrating](../../backend-system/building-backends/08-migrating.md)!
+:::
+
+The Gerrit integration has a special entity provider for discovering catalog entities
+from Gerrit repositories. The provider uses the "List Projects" API in Gerrit to get
+a list of repositories and will automatically ingest all `catalog-info.yaml` files
+stored in the root of the matching projects.
+
+## Installation
+
+As this provider is not one of the default providers, you will first need to install
+the Gerrit provider plugin:
+
+```bash title="From your Backstage root directory"
+yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-gerrit
+```
+
+Then add the plugin to the plugin catalog `packages/backend/src/plugins/catalog.ts`:
+
+```ts
+/* packages/backend/src/plugins/catalog.ts */
+import { GerritEntityProvider } from '@backstage/plugin-catalog-backend-module-gerrit';
+const builder = await CatalogBuilder.create(env);
+/** ... other processors and/or providers ... */
+builder.addEntityProvider(
+ GerritEntityProvider.fromConfig(env.config, {
+ logger: env.logger,
+ scheduler: env.scheduler,
+ }),
+);
+```
+
+## Configuration
+
+To use the discovery processor, you'll need a Gerrit integration
+[set up](locations.md). Then you can add any number of providers.
+
+```yaml
+# app-config.yaml
+catalog:
+ providers:
+ gerrit:
+ yourProviderId: # identifies your dataset / provider independent of config changes
+ host: gerrit-your-company.com
+ branch: master # Optional
+ query: 'state=ACTIVE&prefix=webapps'
+ schedule:
+ # supports cron, ISO duration, "human duration" as used in code
+ frequency: { minutes: 30 }
+ # supports ISO duration, "human duration" as used in code
+ timeout: { minutes: 3 }
+ backend:
+ host: gerrit-your-company.com
+ branch: master # Optional
+ query: 'state=ACTIVE&prefix=backend'
+```
+
+The provider configuration is composed of three parts:
+
+- **`host`**: the host of the Gerrit integration to use.
+- **`branch`** _(optional)_: the branch where we will look for catalog entities (defaults to "master").
+- **`query`**: this string is directly used as the argument to the "List Project" API.
+ Typically, you will want to have some filter here to exclude projects that will
+ never contain any catalog files.
diff --git a/docs/integrations/gerrit/discovery.md b/docs/integrations/gerrit/discovery.md
index 96dfbd47fb..eca0417871 100644
--- a/docs/integrations/gerrit/discovery.md
+++ b/docs/integrations/gerrit/discovery.md
@@ -6,6 +6,10 @@ sidebar_label: Discovery
description: Automatically discovering catalog entities from Gerrit repositories
---
+:::info
+This documentation is written for [the new backend system](../../backend-system/index.md) which is the default since Backstage [version 1.24](../../releases/v1.24.0.md). If you are still on the old backend system, you may want to read [its own article](./discovery--old.md) instead, and [consider migrating](../../backend-system/building-backends/08-migrating.md)!
+:::
+
The Gerrit integration has a special entity provider for discovering catalog entities
from Gerrit repositories. The provider uses the "List Projects" API in Gerrit to get
a list of repositories and will automatically ingest all `catalog-info.yaml` files
@@ -20,19 +24,13 @@ the Gerrit provider plugin:
yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-gerrit
```
-Then add the plugin to the plugin catalog `packages/backend/src/plugins/catalog.ts`:
+Then update your backend by adding the following line:
-```ts
-/* packages/backend/src/plugins/catalog.ts */
-import { GerritEntityProvider } from '@backstage/plugin-catalog-backend-module-gerrit';
-const builder = await CatalogBuilder.create(env);
-/** ... other processors and/or providers ... */
-builder.addEntityProvider(
- GerritEntityProvider.fromConfig(env.config, {
- logger: env.logger,
- scheduler: env.scheduler,
- }),
-);
+```ts title="packages/backend/src/index.ts"
+backend.add(import('@backstage/plugin-catalog-backend/alpha'));
+/* highlight-add-start */
+backend.add(import('@backstage/plugin-catalog-backend-module-gerrit/alpha'));
+/* highlight-add-end */
```
## Configuration
diff --git a/docs/integrations/gitlab/discovery.md b/docs/integrations/gitlab/discovery.md
index 13ffd79801..70f12f181e 100644
--- a/docs/integrations/gitlab/discovery.md
+++ b/docs/integrations/gitlab/discovery.md
@@ -153,6 +153,7 @@ catalog:
group: example-group # Optional. Group and subgroup (if needed) to look for repositories. If not present the whole instance will be scanned
entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml`
projectPattern: '[\s\S]*' # Optional. Filters found projects based on provided patter. Defaults to `[\s\S]*`, which means to not filter anything
+ excludeRepos: [] # Optional. A list of project paths that should be excluded from discovery, e.g. group/subgroup/repo. Should not start or end with a slash.
schedule: # Same options as in TaskScheduleDefinition. Optional for the Legacy Backend System
# supports cron, ISO duration, "human duration" as used in code
frequency: { minutes: 30 }
diff --git a/docs/releases/v1.30.0-next.1-changelog.md b/docs/releases/v1.30.0-next.1-changelog.md
new file mode 100644
index 0000000000..2f7153fe5c
--- /dev/null
+++ b/docs/releases/v1.30.0-next.1-changelog.md
@@ -0,0 +1,4063 @@
+# Release v1.30.0-next.1
+
+Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.30.0-next.1](https://backstage.github.io/upgrade-helper/?to=1.30.0-next.1)
+
+## @backstage/core-app-api@1.14.2-next.0
+
+# @backstage/core-app-api
+
+## 1.14.1-next.0
+
+### Patch Changes
+
+- 9a46a81: The request to delete the session cookie when running the app in protected mode is now done with a plain `fetch` rather than `FetchApi`. This fixes a bug where the app would immediately try to sign-in again when removing the cookie during logout.
+- Updated dependencies
+ - @backstage/config@1.2.0
+ - @backstage/core-plugin-api@1.9.3
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.8
+
+## 1.14.0
+
+### Minor Changes
+
+- d3c39fc: Allow for the disabling of external routes through config, which was rendered impossible after the introduction of default targets.
+
+ ```yaml
+ app:
+ routes:
+ bindings:
+ # This has the effect of removing the button for registering new
+ # catalog entities in the scaffolder template list view
+ scaffolder.registerComponent: false
+ ```
+
+### Patch Changes
+
+- db2e2d5: Updated config schema to support app.routes.bindings
+- Updated dependencies
+ - @backstage/config@1.2.0
+ - @backstage/core-plugin-api@1.9.3
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.8
+
+## 1.13.1-next.1
+
+### Patch Changes
+
+- db2e2d5: Updated config schema to support app.routes.bindings
+- Updated dependencies
+ - @backstage/core-plugin-api@1.9.3
+ - @backstage/config@1.2.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.8
+
+## 1.13.0-next.0
+
+### Minor Changes
+
+- d3c39fc: Allow for the disabling of external routes through config, which was rendered impossible after the introduction of default targets.
+
+ ```yaml
+ app:
+ routes:
+ bindings:
+ # This has the effect of removing the button for registering new
+ # catalog entities in the scaffolder template list view
+ scaffolder.registerComponent: false
+ ```
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.9.3
+ - @backstage/config@1.2.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.8
+
+## 1.12.6
+
+### Patch Changes
+
+- 35fbe09: Added support for configuration of route bindings through static configuration, and default targets for external route refs.
+
+ In addition to configuring route bindings through code, it is now also possible to configure route bindings under the `app.routes.bindings` key, for example:
+
+ ```yaml
+ app:
+ routes:
+ bindings:
+ catalog.createComponent: catalog-import.importPage
+ ```
+
+ Each key in the route binding object is of the form `.`, where the route name is key used in the `externalRoutes` object passed to `createPlugin`. The value is of the same form, but with the name taken from the plugin `routes` option instead.
+
+ The equivalent of the above configuration in code is the following:
+
+ ```ts
+ const app = createApp({
+ // ...
+ bindRoutes({ bind }) {
+ bind(catalogPlugin.externalRoutes, {
+ createComponent: catalogImportPlugin.routes.importPage,
+ });
+ },
+ });
+ ```
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.9.3
+ - @backstage/config@1.2.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.8
+
+## 1.12.6-next.0
+
+### Patch Changes
+
+- 35fbe09: Added support for configuration of route bindings through static configuration, and default targets for external route refs.
+
+ In addition to configuring route bindings through code, it is now also possible to configure route bindings under the `app.routes.bindings` key, for example:
+
+ ```yaml
+ app:
+ routes:
+ bindings:
+ catalog.createComponent: catalog-import.importPage
+ ```
+
+ Each key in the route binding object is of the form `.`, where the route name is key used in the `externalRoutes` object passed to `createPlugin`. The value is of the same form, but with the name taken from the plugin `routes` option instead.
+
+ The equivalent of the above configuration in code is the following:
+
+ ```ts
+ const app = createApp({
+ // ...
+ bindRoutes({ bind }) {
+ bind(catalogPlugin.externalRoutes, {
+ createComponent: catalogImportPlugin.routes.importPage,
+ });
+ },
+ });
+ ```
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.9.3-next.0
+ - @backstage/config@1.2.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.8
+
+## 1.12.5
+
+### Patch Changes
+
+- 1bed9a3: The Backstage identity session expiration check will no longer fall back to using the provider expiration. This was introduced to smooth out the rollout of Backstage release 1.18, and is no longer needed.
+
+## 1.12.4
+
+### Patch Changes
+
+- c884b9a: The app is now aware of if it is being served from the `app-backend` with a separate public and protected bundles. When in protected mode the app will now continuously refresh the session cookie, as well as clear the cookie if the user signs out.
+- abfbcfc: Updated dependency `@testing-library/react` to `^15.0.0`.
+- cb1e3b0: Updated dependency `@testing-library/dom` to `^10.0.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.9.2
+ - @backstage/version-bridge@1.0.8
+ - @backstage/config@1.2.0
+ - @backstage/types@1.1.1
+
+## 1.12.4-next.0
+
+### Patch Changes
+
+- c884b9a: The app is now aware of if it is being served from the `app-backend` with a separate public and protected bundles. When in protected mode the app will now continuously refresh the session cookie, as well as clear the cookie if the user signs out.
+- Updated dependencies
+ - @backstage/config@1.2.0
+ - @backstage/core-plugin-api@1.9.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.12.3
+
+### Patch Changes
+
+- e8f026a: Use ESM exports of react-use library
+- Updated dependencies
+ - @backstage/core-plugin-api@1.9.1
+ - @backstage/config@1.2.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.12.2
+
+### Patch Changes
+
+- e8f026a: Use ESM exports of react-use library
+- Updated dependencies
+ - @backstage/core-plugin-api@1.9.1
+ - @backstage/config@1.2.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.12.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.2.0
+ - @backstage/core-plugin-api@1.9.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.12.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.2.0-next.1
+ - @backstage/core-plugin-api@1.9.1-next.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.12.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.1.2-next.0
+ - @backstage/core-plugin-api@1.9.1-next.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.12.0
+
+### Minor Changes
+
+- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the
+ `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the
+ implementation is in `@backstage/core-app-api` and a factory has been added to
+ `@backstage/app-defaults`.
+
+### Patch Changes
+
+- 9aac2b0: Use `--cwd` as the first `yarn` argument
+- 8fe56a8: Widen `@types/react` dependency range to include version 18.
+- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.9.0
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.12.0-next.1
+
+### Minor Changes
+
+- f919be9: Added a utility API for VMware Cloud auth; the API ref is available in the
+ `@backstage/core-plugin-api` and `@backstage/frontend-plugin-api` packages, the
+ implementation is in `@backstage/core-app-api` and a factory has been added to
+ `@backstage/app-defaults`.
+
+### Patch Changes
+
+- 9aac2b0: Use `--cwd` as the first `yarn` argument
+- 8fe56a8: Widen `@types/react` dependency range to include version 18.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.9.0-next.1
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.11.4-next.0
+
+### Patch Changes
+
+- 7da67ce: Change `defaultScopes` for Bitbucket auth from invalid `team` to `account`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.8.3-next.0
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.11.3
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.8.2
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.11.3-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.8.2-next.0
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.11.2
+
+### Patch Changes
+
+- 3e358b0: Added deprecation warning for React Router v6 beta, please make sure you have migrated your apps to use React Router v6 stable as support for the beta version will be removed. See the [migration tutorial](https://backstage.io/docs/tutorials/react-router-stable-migration) for more information.
+- 0cbb03b: Fixing regular expression ReDoS with zod packages. Upgrading to latest. ref:
+- Updated dependencies
+ - @backstage/core-plugin-api@1.8.1
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.11.2-next.1
+
+### Patch Changes
+
+- 3e358b0dff: Added deprecation warning for React Router v6 beta, please make sure you have migrated your apps to use React Router v6 stable as support for the beta version will be removed. See the [migration tutorial](https://backstage.io/docs/tutorials/react-router-stable-migration) for more information.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.8.1-next.1
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.11.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.8.1-next.0
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.7
+
+## 1.11.1
+
+### Patch Changes
+
+- 6c2b872153: Add official support for React 18.
+- 89d13e5618: Add current and default scopes when refreshing session
+- 9ab0572217: Add component data `core.type` marker for `AppRouter` and `FlatRoutes`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.8.0
+ - @backstage/version-bridge@1.0.7
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+
+## 1.11.1-next.0
+
+### Patch Changes
+
+- 6c2b872153: Add official support for React 18.
+- 89d13e5618: Add current and default scopes when refreshing session
+- 9ab0572217: Add component data `core.type` marker for `AppRouter` and `FlatRoutes`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.8.0-next.0
+ - @backstage/version-bridge@1.0.7-next.0
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+
+## 1.11.0
+
+### Minor Changes
+
+- c9d9bfeca2: URL encode some well known unsafe characters in `RouteResolver` (and therefore `useRouteRef`)
+
+### Patch Changes
+
+- 29e4d8b76b: Fixed bug in `AppRouter` to determine the correct `signOutTargetUrl` if `app.baseUrl` contains a `basePath`
+- acca17e91a: Wrap entire app in ``, enabling support for using translations outside plugins.
+- 1a0616fa10: Add missing resource and template app icons
+- 9a1fce352e: Updated dependency `@testing-library/jest-dom` to `^6.0.0`.
+- f95af4e540: Updated dependency `@testing-library/dom` to `^9.0.0`.
+- f1b349cfba: Fixed a bug in `TranslationApi` implementation where in some cases it wouldn't notify subscribers of language changes.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.7.0
+ - @backstage/version-bridge@1.0.6
+ - @backstage/config@1.1.1
+ - @backstage/types@1.1.1
+
+## 1.11.0-next.2
+
+### Minor Changes
+
+- c9d9bfeca2: URL encode some well known unsafe characters in `RouteResolver` (and therefore `useRouteRef`)
+
+### Patch Changes
+
+- acca17e91a: Wrap entire app in ``, enabling support for using translations outside plugins.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.7.0-next.1
+ - @backstage/config@1.1.1-next.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.5
+
+## 1.10.1-next.1
+
+### Patch Changes
+
+- 1a0616fa10: Add missing resource and template app icons
+- Updated dependencies
+ - @backstage/core-plugin-api@1.7.0-next.0
+ - @backstage/config@1.1.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.5
+
+## 1.10.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.7.0-next.0
+ - @backstage/config@1.1.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.5
+
+## 1.10.0
+
+### Minor Changes
+
+- 18619f793c94: Fixed two bugs in how the `OAuth2Session` type represents the underlying data. The `expiresAt` and `backstageIdentity` are now both optional, since that's what they are in practice. This is not considered a breaking change since it was effectively a bug in the modelling of the state that this type represents, and the type was not used in any other external contract.
+- 18619f793c94: The `OAuth` class which is used by all OAuth providers will now consider both the session expiration of both the Backstage identity as well as the upstream identity provider, and refresh the session with either of them is about to expire.
+- 6e30769cc627: Introduced experimental support for internationalization.
+
+### Patch Changes
+
+- 406b786a2a2c: Mark package as being free of side effects, allowing more optimized Webpack builds.
+- 9fe827b380e1: Internal refactor
+- 8cec7664e146: Removed `@types/node` dependency
+- Updated dependencies
+ - @backstage/config@1.1.0
+ - @backstage/core-plugin-api@1.6.0
+ - @backstage/types@1.1.1
+ - @backstage/version-bridge@1.0.5
+
+## 1.10.0-next.3
+
+### Patch Changes
+
+- 406b786a2a2c: Mark package as being free of side effects, allowing more optimized Webpack builds.
+- 9fe827b380e1: Internal refactor
+- Updated dependencies
+ - @backstage/config@1.1.0-next.2
+ - @backstage/core-plugin-api@1.6.0-next.3
+ - @backstage/types@1.1.1-next.0
+ - @backstage/version-bridge@1.0.5-next.0
+
+## 1.10.0-next.2
+
+### Minor Changes
+
+- 6e30769cc627: Introduced experimental support for internationalization.
+
+### Patch Changes
+
+- 8cec7664e146: Removed `@types/node` dependency
+- Updated dependencies
+ - @backstage/core-plugin-api@1.6.0-next.2
+ - @backstage/config@1.1.0-next.1
+ - @backstage/types@1.1.0
+ - @backstage/version-bridge@1.0.4
+
+## 1.10.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.1.0-next.0
+ - @backstage/core-plugin-api@1.6.0-next.1
+ - @backstage/types@1.1.0
+ - @backstage/version-bridge@1.0.4
+
+## 1.10.0-next.0
+
+### Minor Changes
+
+- 18619f793c94: Fixed two bugs in how the `OAuth2Session` type represents the underlying data. The `expiresAt` and `backstageIdentity` are now both optional, since that's what they are in practice. This is not considered a breaking change since it was effectively a bug in the modelling of the state that this type represents, and the type was not used in any other external contract.
+- 18619f793c94: The `OAuth` class which is used by all OAuth providers will now consider both the session expiration of both the Backstage identity as well as the upstream identity provider, and refresh the session with either of them is about to expire.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.6.0-next.0
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/version-bridge@1.0.4
+
+## 1.9.1
+
+### Patch Changes
+
+- 9ae4e7e63836: Fixed a bug that could cause `navigate` analytics events to be misattributed to the plugin mounted on the root route (e.g. the `home` plugin at `/`) when the route that was navigated to wasn't associated with a routable extension.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/version-bridge@1.0.4
+
+## 1.9.1-next.0
+
+### Patch Changes
+
+- 9ae4e7e63836: Fixed a bug that could cause `navigate` analytics events to be misattributed to the plugin mounted on the root route (e.g. the `home` plugin at `/`) when the route that was navigated to wasn't associated with a routable extension.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/version-bridge@1.0.4
+
+## 1.9.0
+
+### Minor Changes
+
+- a77ddf7ccd71: add login in popup options to config popup width and height
+
+### Patch Changes
+
+- 8174cf4c0edf: Fixing MUI / Material UI references
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/version-bridge@1.0.4
+
+## 1.8.2-next.1
+
+### Patch Changes
+
+- 8174cf4c0edf: Fixing MUI / Material UI references
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.3-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/version-bridge@1.0.4
+
+## 1.8.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.3-next.0
+ - @backstage/config@1.0.8
+
+## 1.8.1
+
+### Patch Changes
+
+- 12adfbc8fe2d: Fixed a bug that prevented accurate plugin and route data from being applied to `navigate` analytics events when users visited pages constructed with ``, ``, and similar components that are used to gather one or more routable extensions under a given path.
+- ac677bc30ae0: Expose discovery.endpoints configuration to use FrontendHostDiscovery
+- 74b216ee4e50: Add `PropsWithChildren` to usages of `ComponentType`, in preparation for React 18 where the children are no longer implicit.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.2
+ - @backstage/types@1.1.0
+ - @backstage/config@1.0.8
+ - @backstage/version-bridge@1.0.4
+
+## 1.8.1-next.0
+
+### Patch Changes
+
+- 74b216ee4e50: Add `PropsWithChildren` to usages of `ComponentType`, in preparation for React 18 where the children are no longer implicit.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.2-next.0
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+
+## 1.8.0
+
+### Minor Changes
+
+- c89437db899: The analytics' `navigate` event will now include the route parameters as attributes of the navigate event
+
+### Patch Changes
+
+- b645d70034a: Fixed a bug in the Azure auth provider which prevented getting access tokens with multiple scopes for one resource
+- 42d817e76ab: Added `FrontendHostDiscovery` for config driven discovery implementation
+- Updated dependencies
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+
+## 1.8.0-next.1
+
+### Minor Changes
+
+- c89437db899: The analytics' `navigate` event will now include the route parameters as attributes of the navigate event
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/config@1.0.7
+
+## 1.7.1-next.0
+
+### Patch Changes
+
+- 42d817e76ab: Added `FrontendHostDiscovery` for config driven discovery implementation
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4
+
+## 1.7.0
+
+### Minor Changes
+
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+- c15e0cedbe1: The `AuthConnector` interface now supports specifying a set of scopes when
+ refreshing a session. The `DefaultAuthConnector` implementation passes the
+ `scope` query parameter to the auth-backend plugin appropriately. The
+ `RefreshingAuthSessionManager` passes any scopes in its `GetSessionRequest`
+ appropriately.
+
+### Patch Changes
+
+- 1e4f5e91b8e: Bump `zod` and `zod-to-json-schema` dependencies.
+- e0c6e8b9c3c: Update peer dependencies
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.1
+ - @backstage/version-bridge@1.0.4
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+
+## 1.7.0-next.3
+
+### Minor Changes
+
+- c15e0cedbe1: The `AuthConnector` interface now supports specifying a set of scopes when
+ refreshing a session. The `DefaultAuthConnector` implementation passes the
+ `scope` query parameter to the auth-backend plugin appropriately. The
+ `RefreshingAuthSessionManager` passes any scopes in its `GetSessionRequest`
+ appropriately.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.7
+ - @backstage/core-plugin-api@1.5.1-next.1
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4-next.0
+
+## 1.7.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.1-next.1
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.4-next.0
+
+## 1.7.0-next.1
+
+### Patch Changes
+
+- 1e4f5e91b8e: Bump `zod` and `zod-to-json-schema` dependencies.
+- e0c6e8b9c3c: Update peer dependencies
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.1-next.0
+ - @backstage/version-bridge@1.0.4-next.0
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+
+## 1.7.0-next.0
+
+### Minor Changes
+
+- 7908d72e033: Introduce a new global config parameter, `enableExperimentalRedirectFlow`. When enabled, auth will happen with an in-window redirect flow rather than through a popup window.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## 1.6.0
+
+### Minor Changes
+
+- 456eaa8cf83: `OAuth2` now gets ID tokens from a session with the `openid` scope explicitly
+ requested.
+
+ This should not be considered a breaking change, because spec-compliant OIDC
+ providers will already be returning ID tokens if and only if the `openid` scope
+ is granted.
+
+ This change makes the dependence explicit, and removes the burden on
+ OAuth2-based providers which require an ID token (e.g. this is done by various
+ default [auth handlers](https://backstage.io/docs/auth/identity-resolver/#authhandler)) to add
+ `openid` to their default scopes. _That_ could carry another indirect benefit:
+ by removing `openid` from the default scopes for a provider, grants for
+ resource-specific access tokens can avoid requesting excess ID token-related
+ scopes.
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0
+ - @backstage/config@1.0.7
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## 1.6.0-next.2
+
+### Minor Changes
+
+- 456eaa8cf83: `OAuth2` now gets ID tokens from a session with the `openid` scope explicitly
+ requested.
+
+ This should not be considered a breaking change, because spec-compliant OIDC
+ providers will already be returning ID tokens if and only if the `openid` scope
+ is granted.
+
+ This change makes the dependence explicit, and removes the burden on
+ OAuth2-based providers which require an ID token (e.g. this is done by various
+ default [auth handlers](https://backstage.io/docs/auth/identity-resolver/#authhandler)) to add
+ `openid` to their default scopes. _That_ could carry another indirect benefit:
+ by removing `openid` from the default scopes for a provider, grants for
+ resource-specific access tokens can avoid requesting excess ID token-related
+ scopes.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.5.0-next.2
+ - @backstage/config@1.0.7-next.0
+
+## 1.5.1-next.1
+
+### Patch Changes
+
+- 52b0022dab7: Updated dependency `msw` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.1
+ - @backstage/config@1.0.7-next.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## 1.5.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.1-next.0
+ - @backstage/config@1.0.6
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## 1.5.0
+
+### Minor Changes
+
+- db10b6ef65: Added a Bitbucket Server Auth Provider and added its API to the app defaults
+
+### Patch Changes
+
+- dff4d8ddb1: Fixed an issue where an explicit port the frontend base URL could break the app.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.4.0
+ - @backstage/config@1.0.6
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## 1.4.1-next.0
+
+### Patch Changes
+
+- dff4d8ddb1: Fixed an issue where an explicit port the frontend base URL could break the app.
+- Updated dependencies
+ - @backstage/config@1.0.6
+ - @backstage/core-plugin-api@1.3.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## 1.4.0
+
+### Minor Changes
+
+- bca8e8b393: Allow defining application level feature flags. See [Feature Flags documentation](https://backstage.io/docs/plugins/feature-flags#in-the-application) for reference.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.3.0
+ - @backstage/config@1.0.6
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## 1.4.0-next.1
+
+### Minor Changes
+
+- bca8e8b393: Allow defining application level feature flags. See [Feature Flags documentation](https://backstage.io/docs/plugins/feature-flags#in-the-application) for reference.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.3.0-next.1
+ - @backstage/config@1.0.6-next.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## 1.3.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.6-next.0
+ - @backstage/core-plugin-api@1.2.1-next.0
+ - @backstage/types@1.0.2
+ - @backstage/version-bridge@1.0.3
+
+## 1.3.0
+
+### Minor Changes
+
+- e0d9c9559a: Added a new `AppRouter` component and `app.createRoot()` method that replaces `app.getRouter()` and `app.getProvider()`, which are now deprecated. The new `AppRouter` component is a drop-in replacement for the old router component, while the new `app.createRoot()` method is used instead of the old provider component.
+
+ An old app setup might look like this:
+
+ ```tsx
+ const app = createApp(/* ... */);
+
+ const AppProvider = app.getProvider();
+ const AppRouter = app.getRouter();
+
+ const routes = ...;
+
+ const App = () => (
+
+
+
+
+ {routes}
+
+
+ );
+
+ export default App;
+ ```
+
+ With these new APIs, the setup now looks like this:
+
+ ```tsx
+ import { AppRouter } from '@backstage/core-app-api';
+
+ const app = createApp(/* ... */);
+
+ const routes = ...;
+
+ export default app.createRoot(
+ <>
+
+
+
+ {routes}
+
+ >,
+ );
+ ```
+
+ Note that `app.createRoot()` accepts a React element, rather than a component.
+
+### Patch Changes
+
+- d3fea4ae0a: Internal fixes to avoid implicit usage of globals
+- b05dcd5530: Move the `zod` dependency to a version that does not collide with other libraries
+- b4b5b02315: Tweak feature flag registration so that it happens immediately before the first rendering of the app, rather than just after.
+- 6870b43dd1: Fix for the automatic rewriting of base URLs.
+- 203271b746: Prevent duplicate feature flag components from rendering in the settings when using components
+- 3280711113: Updated dependency `msw` to `^0.49.0`.
+- 19356df560: Updated dependency `zen-observable` to `^0.9.0`.
+- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`.
+- 8015ff1258: Tweaked wording to use inclusive terminology
+- 653d7912ac: Made `WebStorage` notify its subscribers when `localStorage` values change in other tabs/windows
+- 63310e3987: Apps will now rewrite the `app.baseUrl` configuration to match the current `location.origin`. The `backend.baseUrl` will also be rewritten in the same way when the `app.baseUrl` and `backend.baseUrl` have matching origins. This will reduce the need for separate frontend builds for different environments.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.2.0
+ - @backstage/version-bridge@1.0.3
+ - @backstage/types@1.0.2
+ - @backstage/config@1.0.5
+
+## 1.3.0-next.4
+
+### Minor Changes
+
+- e0d9c9559a: Added a new `AppRouter` component and `app.createRoot()` method that replaces `app.getRouter()` and `app.getProvider()`, which are now deprecated. The new `AppRouter` component is a drop-in replacement for the old router component, while the new `app.createRoot()` method is used instead of the old provider component.
+
+ An old app setup might look like this:
+
+ ```tsx
+ const app = createApp(/* ... */);
+
+ const AppProvider = app.getProvider();
+ const AppRouter = app.getRouter();
+
+ const routes = ...;
+
+ const App = () => (
+
+
+
+
+ {routes}
+
+
+ );
+
+ export default App;
+ ```
+
+ With these new APIs, the setup now looks like this:
+
+ ```tsx
+ import { AppRouter } from '@backstage/core-app-api';
+
+ const app = createApp(/* ... */);
+
+ const routes = ...;
+
+ export default app.createRoot(
+ <>
+
+
+
+ {routes}
+
+ >,
+ );
+ ```
+
+ Note that `app.createRoot()` accepts a React element, rather than a component.
+
+### Patch Changes
+
+- b05dcd5530: Move the `zod` dependency to a version that does not collide with other libraries
+- Updated dependencies
+ - @backstage/config@1.0.5-next.1
+ - @backstage/core-plugin-api@1.2.0-next.2
+ - @backstage/types@1.0.2-next.1
+ - @backstage/version-bridge@1.0.3-next.0
+
+## 1.2.1-next.3
+
+### Patch Changes
+
+- 6870b43dd1: Fix for the automatic rewriting of base URLs.
+- 653d7912ac: Made `WebStorage` notify its subscribers when `localStorage` values change in other tabs/windows
+- Updated dependencies
+ - @backstage/config@1.0.5-next.1
+ - @backstage/core-plugin-api@1.2.0-next.2
+ - @backstage/types@1.0.2-next.1
+ - @backstage/version-bridge@1.0.3-next.0
+
+## 1.2.1-next.2
+
+### Patch Changes
+
+- b4b5b02315: Tweak feature flag registration so that it happens immediately before the first rendering of the app, rather than just after.
+- 203271b746: Prevent duplicate feature flag components from rendering in the settings when using components
+- 8015ff1258: Tweaked wording to use inclusive terminology
+- 63310e3987: Apps will now rewrite the `app.baseUrl` configuration to match the current `location.origin`. The `backend.baseUrl` will also be rewritten in the same way when the `app.baseUrl` and `backend.baseUrl` have matching origins. This will reduce the need for separate frontend builds for different environments.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.2.0-next.2
+ - @backstage/config@1.0.5-next.1
+ - @backstage/types@1.0.2-next.1
+ - @backstage/version-bridge@1.0.3-next.0
+
+## 1.2.1-next.1
+
+### Patch Changes
+
+- d3fea4ae0a: Internal fixes to avoid implicit usage of globals
+- c3fa90e184: Updated dependency `zen-observable` to `^0.10.0`.
+- Updated dependencies
+ - @backstage/version-bridge@1.0.3-next.0
+ - @backstage/core-plugin-api@1.1.1-next.1
+ - @backstage/types@1.0.2-next.1
+ - @backstage/config@1.0.5-next.1
+
+## 1.2.1-next.0
+
+### Patch Changes
+
+- 3280711113: Updated dependency `msw` to `^0.49.0`.
+- 19356df560: Updated dependency `zen-observable` to `^0.9.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.1.1-next.0
+ - @backstage/types@1.0.2-next.0
+ - @backstage/config@1.0.5-next.0
+ - @backstage/version-bridge@1.0.2
+
+## 1.2.0
+
+### Minor Changes
+
+- 9b737e5f2e: Updated the React Router wiring to make use of the new `basename` property of the router components in React Router v6 stable. To implement this, a new optional `basename` property has been added to the `Router` app component, which can be forwarded to the concrete router implementation in order to support this new behavior. This is done by default in any app that does not have a `Router` component override.
+- 127fcad26d: Deprecated the `homepage` config as the component that used it - `HomepageTimer` - has been removed and replaced by the `HeaderWorldClock` in the home plugin
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/version-bridge@1.0.2
+ - @backstage/core-plugin-api@1.1.0
+ - @backstage/types@1.0.1
+ - @backstage/config@1.0.4
+
+## 1.2.0-next.0
+
+### Minor Changes
+
+- 9b737e5f2e: Updated the React Router wiring to make use of the new `basename` property of the router components in React Router v6 stable. To implement this, a new optional `basename` property has been added to the `Router` app component, which can be forwarded to the concrete router implementation in order to support this new behavior. This is done by default in any app that does not have a `Router` component override.
+- 127fcad26d: Deprecated the `homepage` config as the component that used it - `HomepageTimer` - has been removed and replaced by the `HeaderWorldClock` in the home plugin
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.1.0-next.0
+ - @backstage/types@1.0.1-next.0
+ - @backstage/config@1.0.4-next.0
+ - @backstage/version-bridge@1.0.1
+
+## 1.1.1
+
+### Patch Changes
+
+- 27e6404aba: Fixed a bug where gathered index routes would fail to bind routable extensions. This would typically show up when placing a routable extension in the entity page overview tab.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.7
+ - @backstage/config@1.0.3
+ - @backstage/types@1.0.0
+ - @backstage/version-bridge@1.0.1
+
+## 1.1.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.3-next.2
+ - @backstage/core-plugin-api@1.0.7-next.2
+ - @backstage/types@1.0.0
+ - @backstage/version-bridge@1.0.1
+
+## 1.1.1-next.1
+
+### Patch Changes
+
+- 27e6404aba: Fixed a bug where gathered index routes would fail to bind routable extensions. This would typically show up when placing a routable extension in the entity page overview tab.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.7-next.1
+ - @backstage/config@1.0.3-next.1
+ - @backstage/types@1.0.0
+ - @backstage/version-bridge@1.0.1
+
+## 1.1.1-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.3-next.0
+ - @backstage/core-plugin-api@1.0.7-next.0
+ - @backstage/types@1.0.0
+ - @backstage/version-bridge@1.0.1
+
+## 1.1.0
+
+### Minor Changes
+
+- a448fea691: Updated the routing system to be compatible with React Router v6 stable.
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+
+- f9ec4e46e3: When using React Router v6 stable, it is now possible for components within the `Route` element tree to have `path` props, although they will be ignored.
+
+- 7d47def9c4: Removed dependency on `@types/jest`.
+
+- 744fea158b: Added `getSystemIcons()` function to the `AppContext` available through `useApp` that will pull a list of all the icons that have been registered in the App.
+
+- 667d917488: Updated dependency `msw` to `^0.47.0`.
+
+- 87ec2ba4d6: Updated dependency `msw` to `^0.46.0`.
+
+- bf5e9030eb: Updated dependency `msw` to `^0.45.0`.
+
+- 8448b53dd6: Clarify that the `WebStorage` observable returns `JsonValue` items.
+
+- 70299c99d5: Updated `FlatRoutes` to be compatible with React Router v6 stable.
+
+- e9d40ebf54: If you'd like to send analytics events to multiple implementations, you may now
+ do so using the `MultipleAnalyticsApi` implementation provided by this package.
+
+ ```tsx
+ import { MultipleAnalyticsApi } from '@backstage/core-app-api';
+ import {
+ analyticsApiRef,
+ configApiRef,
+ storageApiRef,
+ identityApiRef,
+ } from '@internal/backstage/core-plugin-api';
+ import { CustomAnalyticsApi } from '@internal/analytics';
+ import { VendorAnalyticsApi } from '@vendor/analytics';
+
+ createApiFactory({
+ api: analyticsApiRef,
+ deps: { configApi: configApiRef, identityApi: identityApiRef, storageApi: storageApiRef },
+ factory: ({ configApi, identityApi, storageApi }) =>
+ MultipleAnalyticsApi.fromApis([
+ VendorAnalyticsApi.fromConfig(configApi, { identityApi }),
+ CustomAnalyticsApi.fromConfig(configApi, { identityApi, storageApi }),
+ ]),
+ }),
+ ```
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.6
+ - @backstage/config@1.0.2
+
+## 1.1.0-next.3
+
+### Patch Changes
+
+- 7d47def9c4: Removed dependency on `@types/jest`.
+- Updated dependencies
+ - @backstage/config@1.0.2-next.0
+ - @backstage/core-plugin-api@1.0.6-next.3
+
+## 1.1.0-next.2
+
+### Patch Changes
+
+- f9ec4e46e3: When using React Router v6 stable, it is now possible for components within the `Route` element tree to have `path` props, although they will be ignored.
+
+- 667d917488: Updated dependency `msw` to `^0.47.0`.
+
+- 87ec2ba4d6: Updated dependency `msw` to `^0.46.0`.
+
+- e9d40ebf54: If you'd like to send analytics events to multiple implementations, you may now
+ do so using the `MultipleAnalyticsApi` implementation provided by this package.
+
+ ```tsx
+ import { MultipleAnalyticsApi } from '@backstage/core-app-api';
+ import {
+ analyticsApiRef,
+ configApiRef,
+ storageApiRef,
+ identityApiRef,
+ } from '@internal/backstage/core-plugin-api';
+ import { CustomAnalyticsApi } from '@internal/analytics';
+ import { VendorAnalyticsApi } from '@vendor/analytics';
+
+ createApiFactory({
+ api: analyticsApiRef,
+ deps: { configApi: configApiRef, identityApi: identityApiRef, storageApi: storageApiRef },
+ factory: ({ configApi, identityApi, storageApi }) =>
+ MultipleAnalyticsApi.fromApis([
+ VendorAnalyticsApi.fromConfig(configApi, { identityApi }),
+ CustomAnalyticsApi.fromConfig(configApi, { identityApi, storageApi }),
+ ]),
+ }),
+ ```
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.6-next.2
+
+## 1.1.0-next.1
+
+### Minor Changes
+
+- a448fea691: Updated the routing system to be compatible with React Router v6 stable.
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 70299c99d5: Updated `FlatRoutes` to be compatible with React Router v6 stable.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## 1.0.6-next.0
+
+### Patch Changes
+
+- 744fea158b: Added `getSystemIcons()` function to the `AppContext` available through `useApp` that will pull a list of all the icons that have been registered in the App.
+- bf5e9030eb: Updated dependency `msw` to `^0.45.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.6-next.0
+
+## 1.0.5
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.5
+
+## 1.0.5-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.5-next.0
+
+## 1.0.4
+
+### Patch Changes
+
+- 881fc75a75: Internal tweak removing usage of explicit type parameters for the `BackstagePlugin` type.
+- 8fe2357101: The `signOut` method of the `IdentityApi` will now navigate the user back to the base URL of the app as indicated by the `app.baseUrl` config.
+- a70869e775: Updated dependency `msw` to `^0.43.0`.
+- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.4
+
+## 1.0.4-next.1
+
+### Patch Changes
+
+- 881fc75a75: Internal tweak removing usage of explicit type parameters for the `BackstagePlugin` type.
+- a70869e775: Updated dependency `msw` to `^0.43.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.4-next.0
+
+## 1.0.4-next.0
+
+### Patch Changes
+
+- 8fe2357101: The `signOut` method of the `IdentityApi` will now navigate the user back to the base URL of the app as indicated by the `app.baseUrl` config.
+
+## 1.0.3
+
+### Patch Changes
+
+- 8f7b1835df: Updated dependency `msw` to `^0.41.0`.
+- 19781483a2: Handle URLs as the first argument to `fetchApi`, when using the `plugin:` protocol
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.3
+
+## 1.0.3-next.0
+
+### Patch Changes
+
+- 8f7b1835df: Updated dependency `msw` to `^0.41.0`.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.3-next.0
+
+## 1.0.2
+
+### Patch Changes
+
+- 1fae1f57c9: Fix SAML session schema to no longer require the (deprecated) id, to unbreak session data storage.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.2
+ - @backstage/config@1.0.1
+
+## 1.0.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config@1.0.1-next.0
+ - @backstage/core-plugin-api@1.0.2-next.1
+
+## 1.0.2-next.0
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.2-next.0
+
+## 1.0.1
+
+### Patch Changes
+
+- 7c7919777e: build(deps-dev): bump `@testing-library/react-hooks` from 7.0.2 to 8.0.0
+- 24254fd433: build(deps): bump `@testing-library/user-event` from 13.5.0 to 14.0.0
+- 3ff2bfb66e: Refactored the route collection logic to prepare for future changes and avoid duplicate element tree traversal for the analytics context.
+- a7bb762dab: fixed empty body issue for POST requests using FetchAPI with 'plugin://' prefix
+- 230ad0826f: Bump to using `@types/node` v16
+- c47509e1a0: Implemented changes suggested by Deepsource.io including multiple double non-null assertion operators and unexpected awaits for non-promise values.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.1
+ - @backstage/version-bridge@1.0.1
+
+## 1.0.1-next.1
+
+### Patch Changes
+
+- 24254fd433: build(deps): bump `@testing-library/user-event` from 13.5.0 to 14.0.0
+- 3ff2bfb66e: Refactored the route collection logic to prepare for future changes and avoid duplicate element tree traversal for the analytics context.
+- 230ad0826f: Bump to using `@types/node` v16
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.1-next.0
+
+## 1.0.1-next.0
+
+### Patch Changes
+
+- a7bb762dab: fixed empty body issue for POST requests using FetchAPI with 'plugin://' prefix
+- c47509e1a0: Implemented changes suggested by Deepsource.io including multiple double non-null assertion operators and unexpected awaits for non-promise values.
+
+## 1.0.0
+
+### Major Changes
+
+- b58c70c223: This package has been promoted to v1.0! To understand how this change affects the package, please check out our [versioning policy](https://backstage.io/docs/overview/versioning-policy).
+
+### Patch Changes
+
+- a422d7ce5e: chore(deps): bump `@testing-library/react` from 11.2.6 to 12.1.3
+- f24ef7864e: Minor typo fixes
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.0
+ - @backstage/version-bridge@1.0.0
+ - @backstage/config@1.0.0
+ - @backstage/types@1.0.0
+
+## 0.6.0
+
+### Minor Changes
+
+- bb2bb36651: **BREAKING**: Removed the deprecated `get` method from `StorageAPI` and its implementations, this method has been replaced by the `snapshot` method. The return value from snapshot no longer includes `newValue` which has been replaced by `value`. For getting notified when a value changes, use \`observe# @backstage/core-app-api.
+- f3cce3dcf7: **BREAKING**: Removed export of `GithubSession` and `SamlSession` which are only used internally.
+- af5eaa87f4: **BREAKING**: Removed deprecated `auth0AuthApiRef`, `oauth2ApiRef`, `samlAuthApiRef` and `oidcAuthApiRef` as these APIs are too generic to be useful. Instructions for how to migrate can be found at .
+- dbf84eee55: **BREAKING**: Removed the deprecated `GithubAuth.normalizeScopes` method.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@0.8.0
+
+## 0.5.4
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@0.7.0
+
+## 0.5.3
+
+### Patch Changes
+
+- 1ed305728b: Bump `node-fetch` to version 2.6.7 and `cross-fetch` to version 3.1.5
+- c77c5c7eb6: Added `backstage.role` to `package.json`
+- Updated dependencies
+ - @backstage/core-plugin-api@0.6.1
+ - @backstage/config@0.1.14
+ - @backstage/types@0.1.2
+ - @backstage/version-bridge@0.1.2
+
+## 0.5.2
+
+### Patch Changes
+
+- 40775bd263: Switched out the `GithubAuth` implementation to use the common `OAuth2` implementation. This relies on the simultaneous change in `@backstage/plugin-auth-backend` that enabled access token storage in cookies rather than the current solution that's based on `LocalStorage`.
+
+ > **NOTE:** Make sure you upgrade the `auth-backend` deployment before or at the same time as you deploy this change.
+
+## 0.5.2-next.0
+
+### Patch Changes
+
+- 40775bd263: Switched out the `GithubAuth` implementation to use the common `OAuth2` implementation. This relies on the simultaneous change in `@backstage/plugin-auth-backend` that enabled access token storage in cookies rather than the current solution that's based on `LocalStorage`.
+
+ > **NOTE:** Make sure you upgrade the `auth-backend` deployment before or at the same time as you deploy this change.
+
+## 0.5.1
+
+### Patch Changes
+
+- f959c22787: Asynchronous methods on the identity API can now reliably be called at any time, including early in the bootstrap process or prior to successful sign-in.
+
+ Previously in such situations, a `Tried to access IdentityApi before app was loaded` error would be thrown. Now, those methods will wait and resolve eventually (as soon as a concrete identity API is provided).
+
+## 0.5.0
+
+### Minor Changes
+
+- ceebe25391: Removed deprecated `SignInResult` type, which was replaced with the new `onSignInSuccess` callback.
+
+### Patch Changes
+
+- fb565073ec: Add an `allowUrl` callback option to `FetchMiddlewares.injectIdentityAuth`
+- f050eec2c0: Added validation during the application startup that detects if there are any plugins present that have not had their required external routes bound. Failing the validation will cause a hard crash as it is a programmer error. It lets you detect early on that there are dangling routes, rather than having them cause an error later on.
+- Updated dependencies
+ - @backstage/core-plugin-api@0.6.0
+ - @backstage/config@0.1.13
+
+## 0.5.0-next.0
+
+### Minor Changes
+
+- ceebe25391: Removed deprecated `SignInResult` type, which was replaced with the new `onSignInSuccess` callback.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-plugin-api@0.6.0-next.0
+ - @backstage/config@0.1.13-next.0
+
+## 0.4.0
+
+### Minor Changes
+
+- e2eb92c109: Removed previously deprecated `ApiRegistry` export.
+
+### Patch Changes
+
+- 34442cd5cf: Fixed an issue where valid SAML and GitHub sessions would be considered invalid and not be stored.
+
+ Deprecated the `SamlSession` and `GithubSession` types.
+
+- 784d8078ab: Removed direct and transitive Material UI dependencies.
+
+- Updated dependencies
+ - @backstage/config@0.1.12
+ - @backstage/core-plugin-api@0.5.0
+
+## 0.3.1
+
+### Patch Changes
+
+- 4ce51ab0f1: Internal refactor of the `react-use` imports to use `react-use/lib/*` instead.
+- Updated dependencies
+ - @backstage/core-plugin-api@0.4.1
+ - @backstage/core-components@0.8.3
+
+## 0.3.0
+
+### Minor Changes
+
+- a195284c7b: Updated `WebStorageApi` to reflect the `StorageApi` changes in `@backstage/core-plugin-api`.
+- b3605da81c: - Removed deprecated definition `createApp` from `@backstage/core-app-api` which has been replaced by `@backstage/app-defaults#createApp`
+ - Removed deprecated type `BackstagePluginWithAnyOutput`
+ - Removed deprecated constructors for `GithubAuth`, `OAuth2`, and `SamlAuth` as the `create` method should be used instead
+- 68f8b10ccd: - Removed deprecation configuration option `theme` from `AppTheme` of the `AppThemeApi`
+ - Removed reference to `theme` in the `app-defaults` default `AppTheme`
+ - Removed logic in `AppThemeProvider` that creates `ThemeProvider` from `appTheme.theme`
+
+### Patch Changes
+
+- 7927005152: Add `FetchApi` and related `fetchApiRef` which implement fetch, with an added Backstage token header when available.
+- 518ddc00bc: Schema-validate local storage cached session info on load
+- Updated dependencies
+ - @backstage/app-defaults@0.1.3
+ - @backstage/core-plugin-api@0.4.0
+ - @backstage/core-components@0.8.2
+
+## 0.2.1
+
+### Patch Changes
+
+- c11ce4f552: Deprecated `Auth0Auth`, pointing to using `OAuth2` directly instead.
+- 9d6503e86c: Switched out usage of deprecated `OAuthRequestApi` types from `@backstage/core-plugin-api`.
+- Updated dependencies
+ - @backstage/core-plugin-api@0.3.1
+ - @backstage/core-components@0.8.1
+
+## 0.2.0
+
+### Minor Changes
+
+- a036b65c2f: **BREAKING CHANGE**
+
+ The app `SignInPage` component has been updated to switch out the `onResult` callback for a new `onSignInSuccess` callback. This is an immediate breaking change without any deprecation period, as it was deemed to be the way of making this change that had the lowest impact.
+
+ The new `onSignInSuccess` callback directly accepts an implementation of an `IdentityApi`, rather than a `SignInResult`. The `SignInPage` from `@backstage/core-component` has been updated to fit this new API, and as long as you pass on `props` directly you should not see any breakage.
+
+ However, if you implement your own custom `SignInPage`, then this will be a breaking change and you need to migrate over to using the new callback. While doing so you can take advantage of the `UserIdentity.fromLegacy` helper from `@backstage/core-components` to make the migration simpler by still using the `SignInResult` type. This helper is also deprecated though and is only provided for immediate migration. Long-term it will be necessary to build the `IdentityApi` using for example `UserIdentity.create` instead.
+
+ The following is an example of how you can migrate existing usage immediately using `UserIdentity.fromLegacy`:
+
+ ```ts
+ onResult(signInResult);
+ // becomes
+ onSignInSuccess(UserIdentity.fromLegacy(signInResult));
+ ```
+
+ The following is an example of how implement the new `onSignInSuccess` callback of the `SignInPage` using `UserIdentity.create`:
+
+ ```ts
+ const identityResponse = await authApi.getBackstageIdentity();
+ // Profile is optional and will be removed, but allows the
+ // synchronous getProfile method of the IdentityApi to be used.
+ const profile = await authApi.getProfile();
+ onSignInSuccess(
+ UserIdentity.create({
+ identity: identityResponse.identity,
+ authApi,
+ profile,
+ }),
+ );
+ ```
+
+### Patch Changes
+
+- cd450844f6: Moved React dependencies to `peerDependencies` and allow both React v16 and v17 to be used.
+- dcd1a0c3f4: Minor improvement to the API reports, by not unpacking arguments directly
+- Updated dependencies
+ - @backstage/core-components@0.8.0
+ - @backstage/core-plugin-api@0.3.0
+ - @backstage/app-defaults@0.1.2
+ - @backstage/version-bridge@0.1.1
+
+## 0.1.24
+
+### Patch Changes
+
+- 0e7f256034: Fixed a bug where `useRouteRef` would fail in situations where relative navigation was needed and the app was is mounted on a sub-path. This would typically show up as a failure to navigate to a tab on an entity page.
+- Updated dependencies
+ - @backstage/core-components@0.7.6
+ - @backstage/theme@0.2.14
+ - @backstage/core-plugin-api@0.2.2
+
+## 0.1.23
+
+### Patch Changes
+
+- bab752e2b3: Change default port of backend from 7000 to 7007.
+
+ This is due to the AirPlay Receiver process occupying port 7000 and preventing local Backstage instances on MacOS to start.
+
+ You can change the port back to 7000 or any other value by providing an `app-config.yaml` with the following values:
+
+ backend:
+ listen: 0.0.0.0:7123
+ baseUrl: http://localhost:7123
+
+ More information can be found here:
+
+- 000190de69: The `ApiRegistry` from `@backstage/core-app-api` class has been deprecated and will be removed in a future release. To replace it, we have introduced two new helpers that are exported from `@backstage/test-utils`, namely `TestApiProvider` and `TestApiRegistry`.
+
+ These two new helpers are more tailored for writing tests and development setups, as they allow for partial implementations of each of the APIs.
+
+ When migrating existing code it is typically best to prefer usage of `TestApiProvider` when possible, so for example the following code:
+
+ ```tsx
+ render(
+
+ {...}
+
+ )
+ ```
+
+ Would be migrated to this:
+
+ ```tsx
+ render(
+
+ {...}
+
+ )
+ ```
+
+ In cases where the `ApiProvider` is used in a more standalone way, for example to reuse a set of APIs across multiple tests, the `TestApiRegistry` can be used instead. Note that the `TestApiRegistry` only has a single static factory method, `.from()`, and it is slightly different from the existing `.from()` method on `ApiRegistry` in that it doesn't require the API pairs to be wrapped in an outer array.
+
+ Usage that looks like this:
+
+ ```ts
+ const apis = ApiRegistry.with(
+ identityApiRef,
+ mockIdentityApi as unknown as IdentityApi,
+ ).with(configApiRef, new ConfigReader({}));
+ ```
+
+ OR like this:
+
+ ```ts
+ const apis = ApiRegistry.from([
+ [identityApiRef, mockIdentityApi as unknown as IdentityApi],
+ [configApiRef, new ConfigReader({})],
+ ]);
+ ```
+
+ Would be migrated to this:
+
+ ```ts
+ const apis = TestApiRegistry.from(
+ [identityApiRef, mockIdentityApi],
+ [configApiRef, new ConfigReader({})],
+ );
+ ```
+
+ If your app is still using the `ApiRegistry` to construct the `apis` for `createApp`, we recommend that you move over to use the new method of supplying API factories instead, using `createApiFactory`.
+
+- Updated dependencies
+ - @backstage/core-plugin-api@0.2.1
+ - @backstage/core-components@0.7.5
+
+## 0.1.22
+
+### Patch Changes
+
+- Reverted the `createApp` TypeScript type to match the one before version `0.1.21`, as it was an accidental breaking change.
+
+## 0.1.21
+
+### Patch Changes
+
+- 0b1de52732: Migrated to using new `ErrorApiError` and `ErrorApiErrorContext` names.
+
+- ecd1fcb80a: Deprecated the `BackstagePluginWithAnyOutput` type.
+
+- 32bfbafb0f: Start exporting and marking several types as public to address errors in the API report.
+
+- 014cbf8cb9: The `createApp` function from `@backstage/core-app-api` has been deprecated, with two new options being provided as a replacement.
+
+ The first and most commonly used one is `createApp` from the new `@backstage/app-defaults` package, which behaves just like the existing `createApp`. In the future this method is likely to be expanded to add more APIs and other pieces into the default setup, for example the Utility APIs from `@backstage/integration-react`.
+
+ The other option that we now provide is to use `createSpecializedApp` from `@backstage/core-app-api`. This is a more low-level API where you need to provide a full set of options, including your own `components`, `icons`, `defaultApis`, and `themes`. The `createSpecializedApp` way of creating an app is particularly useful if you are not using `@backstage/core-components` or Material UI, as it allows you to avoid those dependencies completely.
+
+- 475edb5bc5: move the BehaviorSubject init into the constructor
+
+- Updated dependencies
+ - @backstage/core-components@0.7.4
+ - @backstage/core-plugin-api@0.2.0
+ - @backstage/app-defaults@0.1.1
+
+## 0.1.20
+
+### Patch Changes
+
+- 78c512ce8f: I have added default icons for the catalog, scaffolder, techdocs, and search.
+- 8b4284cd5c: Improve API documentation for @backstage/core-plugin-api
+- Updated dependencies
+ - @backstage/core-components@0.7.3
+ - @backstage/theme@0.2.13
+ - @backstage/core-plugin-api@0.1.13
+
+## 0.1.19
+
+### Patch Changes
+
+- 10615525f3: Switch to use the json and observable types from `@backstage/types`
+- 41c49884d2: Start using the new `@backstage/types` package. Initially, this means using the `Observable` and `Json*` types from there. The types also remain in their old places but deprecated, and will be removed in a future release.
+- 925a967f36: Replace usage of test-utils-core with test-utils
+- 6b615e92c8: Api cleanup, adding `@public` where necessary and tweaking some comments
+- Updated dependencies
+ - @backstage/config@0.1.11
+ - @backstage/theme@0.2.12
+ - @backstage/core-components@0.7.2
+ - @backstage/core-plugin-api@0.1.12
+
+## 0.1.18
+
+### Patch Changes
+
+- 202f322927: Atlassian auth provider
+
+ - AtlassianAuth added to core-app-api
+ - Atlassian provider added to plugin-auth-backend
+ - Updated user-settings with Atlassian connection
+
+- 36e67d2f24: Internal updates to apply more strict checks to throw errors.
+
+- Updated dependencies
+ - @backstage/core-components@0.7.1
+ - @backstage/core-plugin-api@0.1.11
+
+## 0.1.17
+
+### Patch Changes
+
+- 75bc878221: Internal refactor to avoid importing all of `@material-ui/core`.
+- Updated dependencies
+ - @backstage/core-components@0.7.0
+ - @backstage/theme@0.2.11
+
+## 0.1.16
+
+### Patch Changes
+
+- d9fd798cc8: The Core App API now automatically instruments all route location changes using
+ the new Analytics API. Each location change triggers a `navigate` event, which
+ is an analogue of a "pageview" event in traditional web analytics systems. In
+ addition to the path, these events provide plugin-level metadata via the
+ analytics context, which can be useful for analyzing plugin usage:
+
+ ```json
+ {
+ "action": "navigate",
+ "subject": "/the-path/navigated/to?with=params#and-hashes",
+ "context": {
+ "extension": "App",
+ "pluginId": "id-of-plugin-that-exported-the-route",
+ "routeRef": "associated-route-ref-id"
+ }
+ }
+ ```
+
+ These events can be identified and handled by checking for the action
+ `navigate` and the extension `App`.
+
+- 4c3eea7788: Bitbucket Cloud authentication - based on the existing GitHub authentication + changes around BB apis and updated scope.
+
+ - BitbucketAuth added to core-app-api.
+ - Bitbucket provider added to plugin-auth-backend.
+ - Cosmetic entry for Bitbucket connection in user-settings Authentication Providers tab.
+
+- d6ad46eb22: Stop calling connector.removeSession in StaticAuthSessionManager, instead just discarding the
+ session locally.
+
+- Updated dependencies
+ - @backstage/core-components@0.6.1
+ - @backstage/core-plugin-api@0.1.10
+
+## 0.1.15
+
+### Patch Changes
+
+- 0c4ee1876f: Enables late registration of plugins into the application by updating ApiHolder when additional plugins have been added in.
+- Updated dependencies
+ - @backstage/core-plugin-api@0.1.9
+ - @backstage/core-components@0.6.0
+
+## 0.1.14
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.5.0
+ - @backstage/config@0.1.10
+
+## 0.1.13
+
+### Patch Changes
+
+- 671015f132: Switch to using utilities from \`@backstage/version-bridge'.
+- bd1981d609: Allow users to specify their own AppThemeProvider
+- Updated dependencies
+ - @backstage/core-components@0.4.2
+ - @backstage/core-plugin-api@0.1.8
+
+## 0.1.12
+
+### Patch Changes
+
+- 841666a19: Removed deprecated internal functions.
+- Updated dependencies
+ - @backstage/core-components@0.4.1
+ - @backstage/config@0.1.9
+ - @backstage/core-plugin-api@0.1.7
+
+## 0.1.11
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.4.0
+
+## 0.1.10
+
+### Patch Changes
+
+- cfcb486aa: Add system icons for the built-in entity types and use them in the entity list of the `catalog-import` plugin.
+
+- 392b36fa1: Added support for using authenticating via GitHub Apps in addition to GitHub OAuth Apps. It used to be possible to use GitHub Apps, but they did not handle session refresh correctly.
+
+ Note that GitHub Apps handle OAuth scope at the app installation level, meaning that the `scope` parameter for `getAccessToken` has no effect. When calling `getAccessToken` in open source plugins, one should still include the appropriate scope, but also document in the plugin README what scopes are required in the case of GitHub Apps.
+
+ In addition, the `authHandler` and `signInResolver` options have been implemented for the GitHub provider in the auth backend.
+
+- Updated dependencies
+ - @backstage/core-components@0.3.3
+ - @backstage/config@0.1.8
+
+## 0.1.9
+
+### Patch Changes
+
+- 72a31c29a: Add support for additional app origins
+- Updated dependencies
+ - @backstage/config@0.1.7
+ - @backstage/core-components@0.3.2
+ - @backstage/theme@0.2.10
+
+## 0.1.8
+
+### Patch Changes
+
+- 362657623: Add support for serving the app with a base path other than `/`, which is enabled by including the path in `app.baseUrl`.
+- 56c773909: Switched `@types/react` dependency to request `*` rather than a specific version.
+- Updated dependencies
+ - @backstage/core-components@0.3.1
+ - @backstage/core-plugin-api@0.1.6
+
+## 0.1.7
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/core-components@0.3.0
+ - @backstage/config@0.1.6
+ - @backstage/core-plugin-api@0.1.5
+
+## 0.1.6
+
+### Patch Changes
+
+- 9d40fcb1e: - Bumping `material-ui/core` version to at least `4.12.2` as they made some breaking changes in later versions which broke `Pagination` of the `Table`.
+ - Switching out `material-table` to `@material-table/core` for support for the later versions of `material-ui/core`
+ - This causes a minor API change to `@backstage/core-components` as the interface for `Table` re-exports the `prop` from the underlying `Table` components.
+ - `onChangeRowsPerPage` has been renamed to `onRowsPerPageChange`
+ - `onChangePage` has been renamed to `onPageChange`
+ - Migration guide is here:
+- Updated dependencies
+ - @backstage/core-components@0.2.0
+ - @backstage/core-plugin-api@0.1.4
+ - @backstage/theme@0.2.9
+
+## 0.1.5
+
+### Patch Changes
+
+- ea249c6e6: Fix a bug in `FlatRoutes` that prevented outlets from working with the root route, as well as matching root routes too broadly.
+- Updated dependencies
+ - @backstage/core-components@0.1.6
+
+## 0.1.4
+
+### Patch Changes
+
+- 62abffee4: Reintroduce export of `defaultConfigLoader`.
+- Updated dependencies
+ - @backstage/core-components@0.1.4
+
+## 0.1.3
+
+### Patch Changes
+
+- dc3e7ce68: Introducing new UnhandledErrorForwarder installed by default. For catching unhandled promise rejections, you can override the API to align with general error handling.
+- 5f4339b8c: Adding `FeatureFlag` component and treating `FeatureFlags` as first class citizens to composability API
+- Updated dependencies
+ - @backstage/core-plugin-api@0.1.3
+
+## 0.1.2
+
+### Patch Changes
+
+- 9bca2a252: Fixes a type bug where supplying all app icons to `createApp` was required, rather than just a partial list.
+
+- 75b8537ce: This change adds automatic error boundaries around extensions.
+
+ This means that all exposed parts of a plugin are wrapped in a general error boundary component, that is plugin aware. The default design for the error box is borrowed from `@backstage/errors`. To override the default "fallback", one must provide a component named `ErrorBoundaryFallback` to `createApp`, like so:
+
+ ```ts
+ const app = createApp({
+ components: {
+ ErrorBoundaryFallback: props => {
+ // a custom fallback component
+ return (
+ <>
+
Oops.
+
+ The plugin {props.plugin.getId()} failed with{' '}
+ {props.error.message}
+
+
+ >
+ );
+ },
+ },
+ });
+ ```
+
+ The props here include:
+
+ - `error`. An `Error` object or something that inherits it that represents the error that was thrown from any inner component.
+ - `resetError`. A callback that will simply attempt to mount the children of the error boundary again.
+ - `plugin`. A `BackstagePlugin` that can be used to look up info to be presented in the error message. For instance, you may want to keep a map of your internal plugins and team names or slack channels and present these when an error occurs. Typically, you'll do that by getting the plugin ID with `plugin.getId()`.
+
+- da8cba44f: Deprecate and disable the extension creation methods, which were added to this package by mistake and should only exist within `@backstage/core-plugin-api`.
+
+- 9bca2a252: Update `createApp` options to allow plugins with unknown output types in order to improve forwards and backwards compatibility.
+
+- Updated dependencies [e47336ea4]
+
+- Updated dependencies [75b8537ce]
+
+- Updated dependencies [da8cba44f]
+ - @backstage/core-components@0.1.2
+ - @backstage/core-plugin-api@0.1.2
+
+## 0.1.1
+
+### Patch Changes
+
+- e7c5e4b30: Update installation instructions in README.
+- Updated dependencies [031ccd45f]
+- Updated dependencies [e7c5e4b30]
+ - @backstage/core-plugin-api@0.1.1
+ - @backstage/core-components@0.1.1
+ - @backstage/theme@0.2.8
+
+## @backstage/config-loader@1.9.0-next.1
+
+### Minor Changes
+
+- 274428f: Add configuration key to File and Remote `ConfigSource`s that enables configuration of parsing logic. Previously limited to yaml, these `ConfigSource`s now allow for a multitude of parsing options (e.g. JSON).
+
+### Patch Changes
+
+- 1edd6c2: The `env` option of `ConfigSources.default` now correctly allows undefined members.
+- Updated dependencies
+ - @backstage/cli-common@0.1.14
+ - @backstage/config@1.2.0
+ - @backstage/errors@1.2.4
+ - @backstage/types@1.1.1
+
+## @backstage/plugin-notifications-backend-module-email@0.2.0-next.1
+
+### Minor Changes
+
+- def53a7: **BREAKING** Following `NotificationTemplateRenderer` methods now return a Promise and **must** be awaited: `getSubject`, `getText` and `getHtml`.
+
+ Required changes and example usage:
+
+ ```diff
+ import { notificationsEmailTemplateExtensionPoint } from '@backstage/plugin-notifications-backend-module-email';
+ import { Notification } from '@backstage/plugin-notifications-common';
+ +import { getNotificationSubject, getNotificationTextContent, getNotificationHtmlContent } from 'my-notification-processing-library`
+ export const notificationsModuleEmailDecorator = createBackendModule({
+ pluginId: 'notifications',
+ moduleId: 'email.templates',
+ register(reg) {
+ reg.registerInit({
+ deps: {
+ emailTemplates: notificationsEmailTemplateExtensionPoint,
+ },
+ async init({ emailTemplates }) {
+ emailTemplates.setTemplateRenderer({
+ - getSubject(notification) {
+ + async getSubject(notification) {
+ - return `New notification from ${notification.source}`;
+ + const subject = await getNotificationSubject(notification);
+ + return `New notification from ${subject}`;
+ },
+ - getText(notification) {
+ + async getText(notification) {
+ - return notification.content;
+ + const text = await getNotificationTextContent(notification);
+ + return text;
+ },
+ - getHtml(notification) {
+ + async getHtml(notification) {
+ - return `