From cf95c5137c940470f3bda7fb91820ad5bc460a0a Mon Sep 17 00:00:00 2001 From: Tim Soslow Date: Mon, 1 May 2023 12:39:54 -0500 Subject: [PATCH 01/20] Configuration for action column in Jenkins table Signed-off-by: Tim Soslow --- .changeset/real-baboons-vanish.md | 5 +++ plugins/jenkins/README.md | 18 +++++++++++ plugins/jenkins/api-report.md | 2 +- .../src/assets/customize_action_view.png | Bin 0 -> 52575 bytes .../BuildsPage/lib/CITable/CITable.tsx | 18 +++++++++++ plugins/jenkins/src/options.ts | 29 ++++++++++++++++++ plugins/jenkins/src/plugin.ts | 9 ++++++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 .changeset/real-baboons-vanish.md create mode 100644 plugins/jenkins/src/assets/customize_action_view.png create mode 100644 plugins/jenkins/src/options.ts diff --git a/.changeset/real-baboons-vanish.md b/.changeset/real-baboons-vanish.md new file mode 100644 index 0000000000..93c30d8389 --- /dev/null +++ b/.changeset/real-baboons-vanish.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins': minor +--- + +Added configuration for the action column in Jenkins CI/CD table. It can be set to rebuild, view, or replay. diff --git a/plugins/jenkins/README.md b/plugins/jenkins/README.md index 2a0ec451c8..12c6a197da 100644 --- a/plugins/jenkins/README.md +++ b/plugins/jenkins/README.md @@ -86,6 +86,24 @@ spec: 8. Click the component in the catalog. You should now see Jenkins builds, and a last build result for your master build. +## Customize Action + +You can customize the action in the CI/CD table. + +| Action | Description | +| ----------------- | ----------------------- | +| rebuild (default) | Run new build with API | +| view | link to view build page | +| replay | link to start replay | + +```yaml +jenkinsPlugin.__experimentalReconfigure({ + tableAction: 'view', +}); +``` + +Customized action - view + ## Features - View all runs inside a folder diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index a2ae16988b..bcba48e4b2 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -98,7 +98,7 @@ const jenkinsPlugin: BackstagePlugin< entityContent: RouteRef; }, {}, - {} + JenkinsInputPluginOptions >; export { jenkinsPlugin }; export { jenkinsPlugin as plugin }; diff --git a/plugins/jenkins/src/assets/customize_action_view.png b/plugins/jenkins/src/assets/customize_action_view.png new file mode 100644 index 0000000000000000000000000000000000000000..8be43c5971e6f764abd7d0c010dd967784271828 GIT binary patch literal 52575 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 { if (count !== 0) { @@ -202,6 +204,22 @@ const generatedColumns: TableColumn[] = [ } }; + const { tableAction } = useJenkinsPluginOptions(); + + if (tableAction === 'view') { + return row.lastBuild?.url ? ( + + + + ) : null; + } else if (tableAction === 'replay') { + return row.lastBuild?.url ? ( + + + + ) : null; + } + return ( <> diff --git a/plugins/jenkins/src/options.ts b/plugins/jenkins/src/options.ts new file mode 100644 index 0000000000..f78e6a75e9 --- /dev/null +++ b/plugins/jenkins/src/options.ts @@ -0,0 +1,29 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { usePluginOptions } from '@backstage/core-plugin-api/alpha'; + +export type JenkinsPluginOptions = { + tableAction: string; +}; + +/** @ignore */ +export type JenkinsInputPluginOptions = { + tableAction: string; +}; + +export const useJenkinsPluginOptions = () => + usePluginOptions(); diff --git a/plugins/jenkins/src/plugin.ts b/plugins/jenkins/src/plugin.ts index 7dbb6bfde1..ddef0a7dfd 100644 --- a/plugins/jenkins/src/plugin.ts +++ b/plugins/jenkins/src/plugin.ts @@ -25,6 +25,7 @@ import { identityApiRef, } from '@backstage/core-plugin-api'; import { JenkinsClient, jenkinsApiRef } from './api'; +import { JenkinsInputPluginOptions, JenkinsPluginOptions } from './options'; /** @public */ export const rootRouteRef = createRouteRef({ @@ -52,6 +53,14 @@ export const jenkinsPlugin = createPlugin({ routes: { entityContent: rootRouteRef, }, + __experimentalConfigure( + options?: JenkinsInputPluginOptions, + ): JenkinsPluginOptions { + const defaultOptions = { + tableAction: 'rebuild', + }; + return { ...defaultOptions, ...options }; + }, }); /** @public */ From 17afe1a0bf0f8de7c64e5a394d0fbae84823beba Mon Sep 17 00:00:00 2001 From: Tim Soslow Date: Thu, 4 May 2023 17:27:46 -0500 Subject: [PATCH 02/20] Update action column with both view & replay icons Signed-off-by: Tim Soslow --- .changeset/real-baboons-vanish.md | 2 +- plugins/jenkins/README.md | 18 ---- plugins/jenkins/api-report.md | 2 +- .../src/assets/customize_action_view.png | Bin 52575 -> 0 bytes plugins/jenkins/src/assets/folder-results.png | Bin 61908 -> 58657 bytes .../BuildsPage/lib/CITable/CITable.tsx | 79 ++++-------------- plugins/jenkins/src/options.ts | 29 ------- plugins/jenkins/src/plugin.ts | 9 -- 8 files changed, 16 insertions(+), 123 deletions(-) delete mode 100644 plugins/jenkins/src/assets/customize_action_view.png delete mode 100644 plugins/jenkins/src/options.ts diff --git a/.changeset/real-baboons-vanish.md b/.changeset/real-baboons-vanish.md index 93c30d8389..9c4a19cd49 100644 --- a/.changeset/real-baboons-vanish.md +++ b/.changeset/real-baboons-vanish.md @@ -2,4 +2,4 @@ '@backstage/plugin-jenkins': minor --- -Added configuration for the action column in Jenkins CI/CD table. It can be set to rebuild, view, or replay. +Updated action column in Jenkins CI/CD table to include links to view and replay. The API based rebuild action was replaced because it does not work for Jenkins workflows that have parameters. diff --git a/plugins/jenkins/README.md b/plugins/jenkins/README.md index 12c6a197da..2a0ec451c8 100644 --- a/plugins/jenkins/README.md +++ b/plugins/jenkins/README.md @@ -86,24 +86,6 @@ spec: 8. Click the component in the catalog. You should now see Jenkins builds, and a last build result for your master build. -## Customize Action - -You can customize the action in the CI/CD table. - -| Action | Description | -| ----------------- | ----------------------- | -| rebuild (default) | Run new build with API | -| view | link to view build page | -| replay | link to start replay | - -```yaml -jenkinsPlugin.__experimentalReconfigure({ - tableAction: 'view', -}); -``` - -Customized action - view - ## Features - View all runs inside a folder diff --git a/plugins/jenkins/api-report.md b/plugins/jenkins/api-report.md index bcba48e4b2..a2ae16988b 100644 --- a/plugins/jenkins/api-report.md +++ b/plugins/jenkins/api-report.md @@ -98,7 +98,7 @@ const jenkinsPlugin: BackstagePlugin< entityContent: RouteRef; }, {}, - JenkinsInputPluginOptions + {} >; export { jenkinsPlugin }; export { jenkinsPlugin as plugin }; diff --git a/plugins/jenkins/src/assets/customize_action_view.png b/plugins/jenkins/src/assets/customize_action_view.png deleted file mode 100644 index 8be43c5971e6f764abd7d0c010dd967784271828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52575 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

G%Gf7bS0P$yaBcGYKD$3fm^*iFx?)WFG@#@{`o4 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 z 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

Anlwd% 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 diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx index b0a8b84718..6fc5f2d35c 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx @@ -13,20 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Link, Progress, Table, TableColumn } from '@backstage/core-components'; -import { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; -import { useEntityPermission } from '@backstage/plugin-catalog-react/alpha'; -import { Box, IconButton, Tooltip, Typography } from '@material-ui/core'; +import { Link, Table, TableColumn } from '@backstage/core-components'; +import { useRouteRef } from '@backstage/core-plugin-api'; +import { Box, IconButton, Typography } from '@material-ui/core'; import RetryIcon from '@material-ui/icons/Replay'; import VisibilityIcon from '@material-ui/icons/Visibility'; -import { default as React, useState } from 'react'; +import { default as React } from 'react'; import { Project } from '../../../../api/JenkinsApi'; import JenkinsLogo from '../../../../assets/JenkinsLogo.svg'; import { buildRouteRef } from '../../../../plugin'; import { useBuilds } from '../../../useBuilds'; import { JenkinsRunStatus } from '../Status'; -import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; -import { useJenkinsPluginOptions } from '../../../../options'; const FailCount = ({ count }: { count: number }): JSX.Element | null => { if (count !== 0) { @@ -176,64 +173,16 @@ const generatedColumns: TableColumn[] = [ title: 'Actions', sorting: false, render: (row: Partial) => { - const ActionWrapper = () => { - const [isLoadingRebuild, setIsLoadingRebuild] = useState(false); - const { allowed, loading } = useEntityPermission( - jenkinsExecutePermission, - ); - - const alertApi = useApi(alertApiRef); - - const onRebuild = async () => { - if (row.onRestartClick) { - setIsLoadingRebuild(true); - try { - await row.onRestartClick(); - alertApi.post({ - message: 'Jenkins re-build has successfully executed', - severity: 'success', - }); - } catch (e) { - alertApi.post({ - message: `Jenkins re-build has failed. Error: ${e.message}`, - severity: 'error', - }); - } finally { - setIsLoadingRebuild(false); - } - } - }; - - const { tableAction } = useJenkinsPluginOptions(); - - if (tableAction === 'view') { - return row.lastBuild?.url ? ( - - - - ) : null; - } else if (tableAction === 'replay') { - return row.lastBuild?.url ? ( - - - - ) : null; - } - - return ( - - <> - {isLoadingRebuild && } - {!isLoadingRebuild && ( - - - - )} - - - ); - }; - return ; + return row.lastBuild?.url ? ( +

+ + + + + + +
+ ) : null; }, width: '10%', }, diff --git a/plugins/jenkins/src/options.ts b/plugins/jenkins/src/options.ts deleted file mode 100644 index f78e6a75e9..0000000000 --- a/plugins/jenkins/src/options.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { usePluginOptions } from '@backstage/core-plugin-api/alpha'; - -export type JenkinsPluginOptions = { - tableAction: string; -}; - -/** @ignore */ -export type JenkinsInputPluginOptions = { - tableAction: string; -}; - -export const useJenkinsPluginOptions = () => - usePluginOptions(); diff --git a/plugins/jenkins/src/plugin.ts b/plugins/jenkins/src/plugin.ts index ddef0a7dfd..7dbb6bfde1 100644 --- a/plugins/jenkins/src/plugin.ts +++ b/plugins/jenkins/src/plugin.ts @@ -25,7 +25,6 @@ import { identityApiRef, } from '@backstage/core-plugin-api'; import { JenkinsClient, jenkinsApiRef } from './api'; -import { JenkinsInputPluginOptions, JenkinsPluginOptions } from './options'; /** @public */ export const rootRouteRef = createRouteRef({ @@ -53,14 +52,6 @@ export const jenkinsPlugin = createPlugin({ routes: { entityContent: rootRouteRef, }, - __experimentalConfigure( - options?: JenkinsInputPluginOptions, - ): JenkinsPluginOptions { - const defaultOptions = { - tableAction: 'rebuild', - }; - return { ...defaultOptions, ...options }; - }, }); /** @public */ From 43f39db8e7f4dc2c9f1e0a8f62307bef2d49136a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Carmo?= Date: Tue, 9 May 2023 16:07:45 +0100 Subject: [PATCH 03/20] Update talkdesk contributor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Carmo --- ADOPTERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index d4dcf8db7e..1d6be70a06 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -14,7 +14,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications | | [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. | | [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. | -| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D | +| [Talkdesk](https://www.talkdesk.com) | [@atmcarmo](https://github.com/atmcarmo) | Engineering Portal with all of our apps and services, overview about our deployment regions and scaffolding new services. | | [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling | | [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling | | [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks | From 8773027ae88128c28d6f30d5752a6d080bf5a912 Mon Sep 17 00:00:00 2001 From: Tim Soslow Date: Tue, 9 May 2023 19:26:49 -0500 Subject: [PATCH 04/20] Update JenkinsAPI to replay build This uses the Jenkins API directly because Jenkins SDK does not have support for replay Signed-off-by: Tim Soslow --- .changeset/real-baboons-vanish.md | 5 +- plugins/jenkins-backend/package.json | 1 + .../src/service/jenkinsApi.test.ts | 86 ++++++++----------- .../jenkins-backend/src/service/jenkinsApi.ts | 44 +++++----- plugins/jenkins-backend/src/service/router.ts | 14 +-- 5 files changed, 72 insertions(+), 78 deletions(-) diff --git a/.changeset/real-baboons-vanish.md b/.changeset/real-baboons-vanish.md index 9c4a19cd49..ca09cc9bf3 100644 --- a/.changeset/real-baboons-vanish.md +++ b/.changeset/real-baboons-vanish.md @@ -1,5 +1,8 @@ --- +'@backstage/plugin-jenkins-backend': minor '@backstage/plugin-jenkins': minor --- -Updated action column in Jenkins CI/CD table to include links to view and replay. The API based rebuild action was replaced because it does not work for Jenkins workflows that have parameters. +Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay. + +Added link to view build in Jenkins CI/CD table action column. diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 959c198661..ac6bffbec9 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -36,6 +36,7 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "jenkins": "^1.0.0", + "node-fetch": "^2.6.7", "winston": "^3.2.1", "yn": "^4.0.0" }, diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts index 57ce2dbed4..956893c778 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts @@ -19,9 +19,10 @@ import jenkins from 'jenkins'; import { JenkinsInfo } from './jenkinsInfoProvider'; import { JenkinsBuild, JenkinsProject } from '../types'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; -import { NotAllowedError } from '@backstage/errors'; +import fetch, { Response } from 'node-fetch'; jest.mock('jenkins'); +jest.mock('node-fetch'); const mockedJenkinsClient = { job: { get: jest.fn(), @@ -34,7 +35,6 @@ const mockedJenkinsClient = { const mockedJenkins = jenkins as jest.Mocked; mockedJenkins.mockReturnValue(mockedJenkinsClient); -const resourceRef = 'component:default/example-component'; const jobFullName = 'example-jobName/foo'; const buildNumber = 19; const jenkinsInfo: JenkinsInfo = { @@ -54,6 +54,7 @@ const fakePermissionApi = { describe('JenkinsApi', () => { const jenkinsApi = new JenkinsApiImpl(fakePermissionApi); + const mockFetch = fetch as jest.MockedFunction; describe('getProjects', () => { const project: JenkinsProject = { @@ -684,55 +685,44 @@ describe('JenkinsApi', () => { buildNumber, ); }); - it('buildProject', async () => { - await jenkinsApi.buildProject(jenkinsInfo, jobFullName, resourceRef); + it('getBuildUrl', async () => { + const jenkinsApiProto = Object.getPrototypeOf(jenkinsApi); + const buildUrl = jenkinsApiProto.getBuildUrl( + jenkinsInfo, + jobFullName, + buildNumber, + ); + expect(buildUrl).toEqual( + 'https://jenkins.example.com/job/example-jobName/job/foo/19', + ); - expect(mockedJenkins).toHaveBeenCalledWith({ - baseUrl: jenkinsInfo.baseUrl, - headers: jenkinsInfo.headers, - promisify: true, - }); - expect(mockedJenkinsClient.job.build).toHaveBeenCalledWith(jobFullName); + const buildUrlTriple = jenkinsApiProto.getBuildUrl( + jenkinsInfo, + 'example-jobName/foo/bar', + buildNumber, + ); + expect(buildUrlTriple).toEqual( + 'https://jenkins.example.com/job/example-jobName/job/foo/job/bar/19', + ); }); - - it('buildProject should fail if it does not have required permissions', async () => { - fakePermissionApi.authorize.mockResolvedValueOnce([ - { - result: AuthorizeResult.DENY, - }, - ]); - - await expect(() => - jenkinsApi.buildProject(jenkinsInfo, jobFullName, resourceRef), - ).rejects.toThrow(NotAllowedError); - }); - - it('buildProject should succeed if it have required permissions', async () => { - fakePermissionApi.authorize.mockResolvedValueOnce([ - { - result: AuthorizeResult.ALLOW, - }, - ]); - - await jenkinsApi.buildProject(jenkinsInfo, jobFullName, resourceRef); - expect(mockedJenkins).toHaveBeenCalledWith({ - baseUrl: jenkinsInfo.baseUrl, - headers: jenkinsInfo.headers, - promisify: true, + describe('rebuildProject', () => { + it('successfully rebuilds', async () => { + mockFetch.mockResolvedValue({ status: 200 } as Response); + const status = await jenkinsApi.rebuildProject( + jenkinsInfo, + jobFullName, + buildNumber, + ); + expect(status).toEqual(200); }); - expect(mockedJenkinsClient.job.build).toHaveBeenCalledWith(jobFullName); - }); - - it('buildProject with crumbIssuer option', async () => { - const info: JenkinsInfo = { ...jenkinsInfo, crumbIssuer: true }; - await jenkinsApi.buildProject(info, jobFullName, resourceRef); - - expect(mockedJenkins).toHaveBeenCalledWith({ - baseUrl: jenkinsInfo.baseUrl, - headers: jenkinsInfo.headers, - promisify: true, - crumbIssuer: true, + it('fails to rebuild', async () => { + mockFetch.mockResolvedValue({ status: 401 } as Response); + const status = await jenkinsApi.rebuildProject( + jenkinsInfo, + jobFullName, + buildNumber, + ); + expect(status).toEqual(401); }); - expect(mockedJenkinsClient.job.build).toHaveBeenCalledWith(jobFullName); }); }); diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.ts b/plugins/jenkins-backend/src/service/jenkinsApi.ts index ef4ddc47b0..de9c490ff4 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.ts @@ -29,6 +29,7 @@ import { } from '@backstage/plugin-permission-common'; import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; import { NotAllowedError } from '@backstage/errors'; +import fetch, { HeaderInit } from 'node-fetch'; export class JenkinsApiImpl { private static readonly lastBuildTreeSpec = `lastBuild[ @@ -144,32 +145,20 @@ export class JenkinsApiImpl { * Trigger a build of a project * @see ../../../jenkins/src/api/JenkinsApi.ts#retry */ - async buildProject( + async rebuildProject( jenkinsInfo: JenkinsInfo, jobFullName: string, - resourceRef: string, - options?: { token?: string }, - ) { - const client = await JenkinsApiImpl.getClient(jenkinsInfo); + buildNumber: number, + ): Promise { + const buildUrl = this.getBuildUrl(jenkinsInfo, jobFullName, buildNumber); - if (this.permissionApi) { - const response = await this.permissionApi.authorize( - [{ permission: jenkinsExecutePermission, resourceRef }], - { token: options?.token }, - ); - // permission api returns always at least one item, we need to check only one result since we do not expect any additional results - const { result } = response[0]; - if (result === AuthorizeResult.DENY) { - throw new NotAllowedError(); - } - } - - // looks like the current SDK only supports triggering a new build - // can't see any support for replay (re-running the specific build with the same SCM info) - - // Note Jenkins itself has concepts of rebuild and replay on a job. - // The latter should be possible to trigger with a POST to /replay/rebuild - await client.job.build(jobFullName); + // the current SDK only supports triggering a new build + // replay the job by triggering request directly from Jenkins api + const response = await fetch(`${buildUrl}/replay/rebuild`, { + method: 'post', + headers: jenkinsInfo.headers as HeaderInit, + }); + return response.status; } // private helper methods @@ -318,4 +307,13 @@ export class JenkinsApiImpl { }) .pop(); } + + private getBuildUrl( + jenkinsInfo: JenkinsInfo, + jobFullName: string, + buildId: number, + ): string { + const jobs = jobFullName.split('/'); + return `${jenkinsInfo.baseUrl}/job/${jobs.join('/job/')}/${buildId}`; + } } diff --git a/plugins/jenkins-backend/src/service/router.ts b/plugins/jenkins-backend/src/service/router.ts index df4c3b5a11..eb29d5d019 100644 --- a/plugins/jenkins-backend/src/service/router.ts +++ b/plugins/jenkins-backend/src/service/router.ts @@ -147,7 +147,8 @@ export async function createRouter( router.post( '/v1/entity/:namespace/:kind/:name/job/:jobFullName/:buildNumber::rebuild', async (request, response) => { - const { namespace, kind, name, jobFullName } = request.params; + const { namespace, kind, name, jobFullName, buildNumber } = + request.params; const token = getBearerTokenFromAuthorizationHeader( request.header('authorization'), ); @@ -161,11 +162,12 @@ export async function createRouter( backstageToken: token, }); - const resourceRef = stringifyEntityRef({ kind, namespace, name }); - await jenkinsApi.buildProject(jenkinsInfo, jobFullName, resourceRef, { - token, - }); - response.json({}); + const status = await jenkinsApi.rebuildProject( + jenkinsInfo, + jobFullName, + parseInt(buildNumber, 10), + ); + response.json({}).status(status); }, ); router.use(errorHandler()); From f6002cda1ffa0817b87fff7543807c4d4264548b Mon Sep 17 00:00:00 2001 From: Tim Soslow Date: Tue, 9 May 2023 19:30:59 -0500 Subject: [PATCH 05/20] Commit yarn.lock Signed-off-by: Tim Soslow --- yarn.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/yarn.lock b/yarn.lock index 0cd30db248..5143cd1154 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7067,6 +7067,7 @@ __metadata: express-promise-router: ^4.1.0 jenkins: ^1.0.0 msw: ^1.0.0 + node-fetch: ^2.6.7 supertest: ^6.1.6 winston: ^3.2.1 yn: ^4.0.0 From 717a49e68b3909c980529f911c34404d791dab1a Mon Sep 17 00:00:00 2001 From: Tim Soslow Date: Tue, 9 May 2023 21:28:14 -0500 Subject: [PATCH 06/20] Cleanup obsolete code Signed-off-by: Tim Soslow --- plugins/jenkins-backend/api-report.md | 4 --- .../src/service/jenkinsApi.test.ts | 12 +-------- .../jenkins-backend/src/service/jenkinsApi.ts | 8 ------ plugins/jenkins-backend/src/service/router.ts | 25 +++---------------- 4 files changed, 4 insertions(+), 45 deletions(-) diff --git a/plugins/jenkins-backend/api-report.md b/plugins/jenkins-backend/api-report.md index fd1365547d..4893592483 100644 --- a/plugins/jenkins-backend/api-report.md +++ b/plugins/jenkins-backend/api-report.md @@ -8,8 +8,6 @@ import { CompoundEntityRef } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import express from 'express'; import { Logger } from 'winston'; -import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; -import { PermissionEvaluator } from '@backstage/plugin-permission-common'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; @@ -85,7 +83,5 @@ export interface RouterOptions { jenkinsInfoProvider: JenkinsInfoProvider; // (undocumented) logger: Logger; - // (undocumented) - permissions?: PermissionEvaluator | PermissionAuthorizer; } ``` diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts index 956893c778..7f8703e4de 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts @@ -18,7 +18,6 @@ import { JenkinsApiImpl } from './jenkinsApi'; import jenkins from 'jenkins'; import { JenkinsInfo } from './jenkinsInfoProvider'; import { JenkinsBuild, JenkinsProject } from '../types'; -import { AuthorizeResult } from '@backstage/plugin-permission-common'; import fetch, { Response } from 'node-fetch'; jest.mock('jenkins'); @@ -43,17 +42,8 @@ const jenkinsInfo: JenkinsInfo = { jobFullName: 'example-jobName', }; -const fakePermissionApi = { - authorize: jest.fn().mockResolvedValue([ - { - result: AuthorizeResult.ALLOW, - }, - ]), - authorizeConditional: jest.fn(), -}; - describe('JenkinsApi', () => { - const jenkinsApi = new JenkinsApiImpl(fakePermissionApi); + const jenkinsApi = new JenkinsApiImpl(); const mockFetch = fetch as jest.MockedFunction; describe('getProjects', () => { diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.ts b/plugins/jenkins-backend/src/service/jenkinsApi.ts index de9c490ff4..0d5d282bf7 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.ts @@ -23,12 +23,6 @@ import type { JenkinsProject, ScmDetails, } from '../types'; -import { - AuthorizeResult, - PermissionEvaluator, -} from '@backstage/plugin-permission-common'; -import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; -import { NotAllowedError } from '@backstage/errors'; import fetch, { HeaderInit } from 'node-fetch'; export class JenkinsApiImpl { @@ -65,8 +59,6 @@ export class JenkinsApiImpl { ${JenkinsApiImpl.jobTreeSpec} ]{0,50}`; - constructor(private readonly permissionApi?: PermissionEvaluator) {} - /** * Get a list of projects for the given JenkinsInfo. * @see ../../../jenkins/src/api/JenkinsApi.ts#getProjects diff --git a/plugins/jenkins-backend/src/service/router.ts b/plugins/jenkins-backend/src/service/router.ts index eb29d5d019..5f82f5e933 100644 --- a/plugins/jenkins-backend/src/service/router.ts +++ b/plugins/jenkins-backend/src/service/router.ts @@ -20,41 +20,22 @@ import Router from 'express-promise-router'; import { Logger } from 'winston'; import { JenkinsInfoProvider } from './jenkinsInfoProvider'; import { JenkinsApiImpl } from './jenkinsApi'; -import { - PermissionAuthorizer, - PermissionEvaluator, - toPermissionEvaluator, -} from '@backstage/plugin-permission-common'; import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node'; -import { stringifyEntityRef } from '@backstage/catalog-model'; import { stringifyError } from '@backstage/errors'; /** @public */ export interface RouterOptions { logger: Logger; jenkinsInfoProvider: JenkinsInfoProvider; - permissions?: PermissionEvaluator | PermissionAuthorizer; } /** @public */ export async function createRouter( options: RouterOptions, ): Promise { - const { jenkinsInfoProvider, permissions, logger } = options; + const { jenkinsInfoProvider } = options; - let permissionEvaluator: PermissionEvaluator | undefined; - if (permissions && 'authorizeConditional' in permissions) { - permissionEvaluator = permissions as PermissionEvaluator; - } else { - logger.warn( - 'PermissionAuthorizer is deprecated. Please use an instance of PermissionEvaluator instead of PermissionAuthorizer in PluginEnvironment#permissions', - ); - permissionEvaluator = permissions - ? toPermissionEvaluator(permissions) - : undefined; - } - - const jenkinsApi = new JenkinsApiImpl(permissionEvaluator); + const jenkinsApi = new JenkinsApiImpl(); const router = Router(); router.use(express.json()); @@ -145,7 +126,7 @@ export async function createRouter( ); router.post( - '/v1/entity/:namespace/:kind/:name/job/:jobFullName/:buildNumber::rebuild', + '/v1/entity/:namespace/:kind/:name/job/:jobFullName/:buildNumber', async (request, response) => { const { namespace, kind, name, jobFullName, buildNumber } = request.params; From c81333866a0416a43728ecd28e1f59b31f0f9de5 Mon Sep 17 00:00:00 2001 From: Tim Soslow Date: Tue, 9 May 2023 21:58:46 -0500 Subject: [PATCH 07/20] Restore table action rebuild Signed-off-by: Tim Soslow --- .../BuildsPage/lib/CITable/CITable.tsx | 69 +++++++++++++++---- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx index 6fc5f2d35c..f2d108eaf7 100644 --- a/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx +++ b/plugins/jenkins/src/components/BuildsPage/lib/CITable/CITable.tsx @@ -13,17 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Link, Table, TableColumn } from '@backstage/core-components'; -import { useRouteRef } from '@backstage/core-plugin-api'; -import { Box, IconButton, Typography } from '@material-ui/core'; +import { Link, Progress, Table, TableColumn } from '@backstage/core-components'; +import { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; +import { useEntityPermission } from '@backstage/plugin-catalog-react/alpha'; +import { Box, IconButton, Tooltip, Typography } from '@material-ui/core'; import RetryIcon from '@material-ui/icons/Replay'; import VisibilityIcon from '@material-ui/icons/Visibility'; -import { default as React } from 'react'; +import { default as React, useState } from 'react'; import { Project } from '../../../../api/JenkinsApi'; import JenkinsLogo from '../../../../assets/JenkinsLogo.svg'; import { buildRouteRef } from '../../../../plugin'; import { useBuilds } from '../../../useBuilds'; import { JenkinsRunStatus } from '../Status'; +import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; const FailCount = ({ count }: { count: number }): JSX.Element | null => { if (count !== 0) { @@ -173,16 +175,55 @@ const generatedColumns: TableColumn[] = [ title: 'Actions', sorting: false, render: (row: Partial) => { - return row.lastBuild?.url ? ( -
- - - - - - -
- ) : null; + const ActionWrapper = () => { + const [isLoadingRebuild, setIsLoadingRebuild] = useState(false); + const { allowed, loading } = useEntityPermission( + jenkinsExecutePermission, + ); + + const alertApi = useApi(alertApiRef); + + const onRebuild = async () => { + if (row.onRestartClick) { + setIsLoadingRebuild(true); + try { + await row.onRestartClick(); + alertApi.post({ + message: 'Jenkins re-build has successfully executed', + severity: 'success', + }); + } catch (e) { + alertApi.post({ + message: `Jenkins re-build has failed. Error: ${e.message}`, + severity: 'error', + }); + } finally { + setIsLoadingRebuild(false); + } + } + }; + + return ( +
+ {row.lastBuild?.url && ( + + + + + + )} + {isLoadingRebuild && } + {!isLoadingRebuild && ( + + + + + + )} +
+ ); + }; + return ; }, width: '10%', }, From 51064e6e5ee1de2d723bba504f2dd6fc5deb93d9 Mon Sep 17 00:00:00 2001 From: Jen Evans Date: Wed, 10 May 2023 09:21:09 -0700 Subject: [PATCH 08/20] Reduce orphan cleanup logging from info to debug Signed-off-by: Jen Evans --- .changeset/friendly-frogs-drop.md | 5 +++++ .../src/processing/DefaultCatalogProcessingEngine.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/friendly-frogs-drop.md diff --git a/.changeset/friendly-frogs-drop.md b/.changeset/friendly-frogs-drop.md new file mode 100644 index 0000000000..a338bb3a7c --- /dev/null +++ b/.changeset/friendly-frogs-drop.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Change orphan cleanup task to debug log from info. diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts index e89d53f79f..c24698f7e9 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts @@ -317,7 +317,7 @@ export class DefaultCatalogProcessingEngine implements CatalogProcessingEngine { try { await this.processingDatabase.transaction(async tx => { const n = await this.processingDatabase.deleteOrphanedEntities(tx); - this.logger.info(`Deleted ${n} orphaned entities`); + this.logger.debug(`Deleted ${n} orphaned entities`); }); } catch (error) { this.logger.warn(`Failed to delete orphaned entities`, error); From 3e6cc3cfe959accee271ca6f19a7f2fbd856dbbf Mon Sep 17 00:00:00 2001 From: Tim Soslow Date: Wed, 10 May 2023 16:56:33 -0500 Subject: [PATCH 09/20] Re-add permission check and crumb issuer support Signed-off-by: Tim Soslow --- plugins/jenkins-backend/api-report.md | 4 + .../src/service/jenkinsApi.test.ts | 109 +++++++++++++++++- .../jenkins-backend/src/service/jenkinsApi.ts | 57 ++++++++- plugins/jenkins-backend/src/service/router.ts | 28 ++++- 4 files changed, 192 insertions(+), 6 deletions(-) diff --git a/plugins/jenkins-backend/api-report.md b/plugins/jenkins-backend/api-report.md index 4893592483..fd1365547d 100644 --- a/plugins/jenkins-backend/api-report.md +++ b/plugins/jenkins-backend/api-report.md @@ -8,6 +8,8 @@ import { CompoundEntityRef } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import express from 'express'; import { Logger } from 'winston'; +import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; +import { PermissionEvaluator } from '@backstage/plugin-permission-common'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; @@ -83,5 +85,7 @@ export interface RouterOptions { jenkinsInfoProvider: JenkinsInfoProvider; // (undocumented) logger: Logger; + // (undocumented) + permissions?: PermissionEvaluator | PermissionAuthorizer; } ``` diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts index 7f8703e4de..15f4bc651f 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts @@ -18,7 +18,9 @@ import { JenkinsApiImpl } from './jenkinsApi'; import jenkins from 'jenkins'; import { JenkinsInfo } from './jenkinsInfoProvider'; import { JenkinsBuild, JenkinsProject } from '../types'; +import { AuthorizeResult } from '@backstage/plugin-permission-common'; import fetch, { Response } from 'node-fetch'; +import { ResponseError } from '@backstage/errors'; jest.mock('jenkins'); jest.mock('node-fetch'); @@ -34,6 +36,7 @@ const mockedJenkinsClient = { const mockedJenkins = jenkins as jest.Mocked; mockedJenkins.mockReturnValue(mockedJenkinsClient); +const resourceRef = 'component:default/example-component'; const jobFullName = 'example-jobName/foo'; const buildNumber = 19; const jenkinsInfo: JenkinsInfo = { @@ -42,10 +45,34 @@ const jenkinsInfo: JenkinsInfo = { jobFullName: 'example-jobName', }; +const fakePermissionApi = { + authorize: jest.fn().mockResolvedValue([ + { + result: AuthorizeResult.ALLOW, + }, + ]), + authorizeConditional: jest.fn(), +}; + +class NoErrorThrownError extends Error {} + +const getError = async (call: () => unknown): Promise => { + try { + await call(); + throw new NoErrorThrownError(); + } catch (error: unknown) { + return error as TError; + } +}; + describe('JenkinsApi', () => { - const jenkinsApi = new JenkinsApiImpl(); + const jenkinsApi = new JenkinsApiImpl(fakePermissionApi); const mockFetch = fetch as jest.MockedFunction; + afterEach(() => { + jest.clearAllMocks(); + }); + describe('getProjects', () => { const project: JenkinsProject = { actions: [], @@ -695,24 +722,100 @@ describe('JenkinsApi', () => { 'https://jenkins.example.com/job/example-jobName/job/foo/job/bar/19', ); }); + describe('getHeaders', () => { + const crumb = { crumb: 'foobar', crumbRequestField: '.crumb' }; + const json = jest.fn() as jest.MockedFunction; + json.mockResolvedValue(crumb); + const jenkinsInfoCrumb: JenkinsInfo = { ...jenkinsInfo, crumbIssuer: true }; + const jenkinsApiProto = Object.getPrototypeOf(jenkinsApi); + + it('adds crumb', async () => { + mockFetch.mockResolvedValueOnce({ ok: true, json } as Response); + const response = await jenkinsApiProto.getHeaders(jenkinsInfoCrumb); + expect(response).toEqual({ ...jenkinsInfo.headers, '.crumb': 'foobar' }); + }); + it('does not add crumb', async () => { + const response = await jenkinsApiProto.getHeaders(jenkinsInfo); + expect(response).toEqual(jenkinsInfo.headers); + }); + it('fails to get crumb', async () => { + mockFetch.mockResolvedValueOnce({ ok: false } as Response); + const error = await getError(async () => + jenkinsApiProto.getHeaders(jenkinsInfoCrumb), + ); + expect(error).toBeInstanceOf(ResponseError); + }); + }); describe('rebuildProject', () => { it('successfully rebuilds', async () => { - mockFetch.mockResolvedValue({ status: 200 } as Response); + mockFetch.mockResolvedValueOnce({ status: 200 } as Response); const status = await jenkinsApi.rebuildProject( jenkinsInfo, jobFullName, buildNumber, + resourceRef, ); expect(status).toEqual(200); }); it('fails to rebuild', async () => { - mockFetch.mockResolvedValue({ status: 401 } as Response); + mockFetch.mockResolvedValueOnce({ status: 401 } as Response); const status = await jenkinsApi.rebuildProject( jenkinsInfo, jobFullName, buildNumber, + resourceRef, ); expect(status).toEqual(401); }); + + it('should fail if it does not have required permissions', async () => { + fakePermissionApi.authorize.mockResolvedValueOnce([ + { + result: AuthorizeResult.DENY, + }, + ]); + + mockFetch.mockResolvedValueOnce({ status: 200 } as Response); + const status = await jenkinsApi.rebuildProject( + jenkinsInfo, + jobFullName, + buildNumber, + resourceRef, + ); + expect(status).toEqual(401); + }); + + it('with crumbIssuer option', async () => { + const info: JenkinsInfo = { ...jenkinsInfo, crumbIssuer: true }; + mockFetch.mockResolvedValueOnce({ status: 200 } as Response); + const crumbHeaders = { headerName: 'headerValue', '.crumb': 'bar' }; + + const privateGetHeaders = jest.spyOn( + JenkinsApiImpl.prototype as any, + 'getHeaders', + ); + privateGetHeaders.mockImplementation(() => { + return crumbHeaders; + }); + + const status = await jenkinsApi.rebuildProject( + info, + jobFullName, + buildNumber, + resourceRef, + ); + expect(status).toEqual(200); + + type HeaderResponse = { + headerName: string; + '.crumb': string; + }; + type OptionResponse = { + headers: HeaderResponse; + method: string; + }; + const requestOptions: OptionResponse = mockFetch.mock.calls[0][1] as any; + expect(requestOptions.headers).toStrictEqual(crumbHeaders); + }); }); }); diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.ts b/plugins/jenkins-backend/src/service/jenkinsApi.ts index 0d5d282bf7..135d695e18 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.ts @@ -23,6 +23,12 @@ import type { JenkinsProject, ScmDetails, } from '../types'; +import { + AuthorizeResult, + PermissionEvaluator, +} from '@backstage/plugin-permission-common'; +import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; +import { ResponseError } from '@backstage/errors'; import fetch, { HeaderInit } from 'node-fetch'; export class JenkinsApiImpl { @@ -59,6 +65,8 @@ export class JenkinsApiImpl { ${JenkinsApiImpl.jobTreeSpec} ]{0,50}`; + constructor(private readonly permissionApi?: PermissionEvaluator) {} + /** * Get a list of projects for the given JenkinsInfo. * @see ../../../jenkins/src/api/JenkinsApi.ts#getProjects @@ -141,14 +149,29 @@ export class JenkinsApiImpl { jenkinsInfo: JenkinsInfo, jobFullName: string, buildNumber: number, + resourceRef: string, + options?: { token?: string }, ): Promise { + if (this.permissionApi) { + const response = await this.permissionApi.authorize( + [{ permission: jenkinsExecutePermission, resourceRef }], + { token: options?.token }, + ); + // permission api returns always at least one item, we need to check only one result since we do not expect any additional results + const { result } = response[0]; + if (result === AuthorizeResult.DENY) { + return 401; + } + } + const buildUrl = this.getBuildUrl(jenkinsInfo, jobFullName, buildNumber); + const headers = await this.getHeaders(jenkinsInfo); // the current SDK only supports triggering a new build // replay the job by triggering request directly from Jenkins api const response = await fetch(`${buildUrl}/replay/rebuild`, { method: 'post', - headers: jenkinsInfo.headers as HeaderInit, + headers: headers, }); return response.status; } @@ -308,4 +331,36 @@ export class JenkinsApiImpl { const jobs = jobFullName.split('/'); return `${jenkinsInfo.baseUrl}/job/${jobs.join('/job/')}/${buildId}`; } + + private async getHeaders(jenkinsInfo: JenkinsInfo): Promise { + let headers = jenkinsInfo.headers as HeaderInit; + if (!jenkinsInfo.crumbIssuer) { + return headers; + } + const response = await fetch( + `${jenkinsInfo.baseUrl}/crumbIssuer/api/json`, + { + method: 'get', + headers: headers, + }, + ); + if (!response.ok) { + throw ResponseError.fromResponse(response); + } + type CrumbResponse = { + crumb: string; + crumbRequestField: string; + }; + + const crumbJson: CrumbResponse = await response.json(); + if ('crumb' in crumbJson && 'crumbRequestField' in crumbJson) { + const headerObject = { + ...jenkinsInfo.headers, + [crumbJson.crumbRequestField]: crumbJson.crumb, + }; + headers = headerObject as HeaderInit; + } + + return headers; + } } diff --git a/plugins/jenkins-backend/src/service/router.ts b/plugins/jenkins-backend/src/service/router.ts index 5f82f5e933..484bfa273f 100644 --- a/plugins/jenkins-backend/src/service/router.ts +++ b/plugins/jenkins-backend/src/service/router.ts @@ -20,22 +20,41 @@ import Router from 'express-promise-router'; import { Logger } from 'winston'; import { JenkinsInfoProvider } from './jenkinsInfoProvider'; import { JenkinsApiImpl } from './jenkinsApi'; +import { + PermissionAuthorizer, + PermissionEvaluator, + toPermissionEvaluator, +} from '@backstage/plugin-permission-common'; import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node'; +import { stringifyEntityRef } from '@backstage/catalog-model'; import { stringifyError } from '@backstage/errors'; /** @public */ export interface RouterOptions { logger: Logger; jenkinsInfoProvider: JenkinsInfoProvider; + permissions?: PermissionEvaluator | PermissionAuthorizer; } /** @public */ export async function createRouter( options: RouterOptions, ): Promise { - const { jenkinsInfoProvider } = options; + const { jenkinsInfoProvider, permissions, logger } = options; - const jenkinsApi = new JenkinsApiImpl(); + let permissionEvaluator: PermissionEvaluator | undefined; + if (permissions && 'authorizeConditional' in permissions) { + permissionEvaluator = permissions as PermissionEvaluator; + } else { + logger.warn( + 'PermissionAuthorizer is deprecated. Please use an instance of PermissionEvaluator instead of PermissionAuthorizer in PluginEnvironment#permissions', + ); + permissionEvaluator = permissions + ? toPermissionEvaluator(permissions) + : undefined; + } + + const jenkinsApi = new JenkinsApiImpl(permissionEvaluator); const router = Router(); router.use(express.json()); @@ -143,10 +162,15 @@ export async function createRouter( backstageToken: token, }); + const resourceRef = stringifyEntityRef({ kind, namespace, name }); const status = await jenkinsApi.rebuildProject( jenkinsInfo, jobFullName, parseInt(buildNumber, 10), + resourceRef, + { + token, + }, ); response.json({}).status(status); }, From 12be418d14247d7dbeccc069841bfc075ad3f1ed Mon Sep 17 00:00:00 2001 From: Marcus Lindfeldt Date: Thu, 11 May 2023 16:26:38 +0200 Subject: [PATCH 10/20] fix: broken link to node-postgres docs Signed-off-by: Marcus Lindfeldt --- docs/tutorials/switching-sqlite-postgres.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/switching-sqlite-postgres.md b/docs/tutorials/switching-sqlite-postgres.md index b87a77f4ed..87afabda60 100644 --- a/docs/tutorials/switching-sqlite-postgres.md +++ b/docs/tutorials/switching-sqlite-postgres.md @@ -37,7 +37,7 @@ backend: connection: ':memory:' # highlight-remove-end # highlight-add-start - # config options: https://node-postgres.com/api/client + # config options: https://node-postgres.com/apis/client client: pg connection: host: ${POSTGRES_HOST} @@ -72,7 +72,7 @@ backend: connection: ':memory:' # highlight-remove-end # highlight-add-start - # config options: https://node-postgres.com/api/client + # config options: https://node-postgres.com/apis/client client: pg connection: host: ${POSTGRES_HOST} From f5a66052f04ffb5791442ef17849b00187cf801e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 11 May 2023 18:14:02 +0200 Subject: [PATCH 11/20] Update code in readme a bit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/perfect-readers-attack.md | 5 +++++ .../README.md | 19 ++++++------------- 2 files changed, 11 insertions(+), 13 deletions(-) create mode 100644 .changeset/perfect-readers-attack.md diff --git a/.changeset/perfect-readers-attack.md b/.changeset/perfect-readers-attack.md new file mode 100644 index 0000000000..93d205eb9c --- /dev/null +++ b/.changeset/perfect-readers-attack.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +--- + +Tweak README diff --git a/plugins/scaffolder-backend-module-gitlab/README.md b/plugins/scaffolder-backend-module-gitlab/README.md index d071ca0cf6..340b57bbf8 100644 --- a/plugins/scaffolder-backend-module-gitlab/README.md +++ b/plugins/scaffolder-backend-module-gitlab/README.md @@ -20,9 +20,10 @@ Configure the action: // packages/backend/src/plugins/scaffolder.ts import { - createGitlabProjectAccessTokenAction, createGitlabProjectAccessTokenAction, createGitlabProjectDeployTokenAction, + createGitlabProjectVariableAction, + createGitlabGroupEnsureExistsAction, } from '@backstage/plugin-scaffolder-backend-module-gitlab'; // Create BuiltIn Actions @@ -36,18 +37,10 @@ const builtInActions = createBuiltinActions({ // Add Gitlab Actions const actions = [ ...builtInActions, - createGitlabProjectAccessTokenAction({ - integrations: integrations, - }), - createGitlabProjectAccessTokenAction({ - integrations: integrations, - }), - createGitlabProjectDeployTokenAction({ - integrations: integrations, - }), - createGitlabGroupEnsureExistsAction({ - integrations: integrations, - }), + createGitlabProjectAccessTokenAction({ integrations: integrations }), + createGitlabProjectDeployTokenAction({ integrations: integrations }), + createGitlabProjectVariableAction({ integrations: integrations }), + createGitlabGroupEnsureExistsAction({ integrations: integrations }), ]; // Create Scaffolder Router From 8f21ebe6295a739dcefaaeabac70f5e03e7158ae Mon Sep 17 00:00:00 2001 From: Tim Soslow Date: Thu, 11 May 2023 23:22:26 -0500 Subject: [PATCH 12/20] Remove crumbIssuer support in rebuildProject Crumb issuer support is not required for API calls using a token, so I am simplifying the code to remove it. Signed-off-by: Tim Soslow --- .../src/service/jenkinsApi.test.ts | 69 ------------------- .../jenkins-backend/src/service/jenkinsApi.ts | 36 +--------- 2 files changed, 1 insertion(+), 104 deletions(-) diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts index 15f4bc651f..76ed1e32e1 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts @@ -20,7 +20,6 @@ import { JenkinsInfo } from './jenkinsInfoProvider'; import { JenkinsBuild, JenkinsProject } from '../types'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; import fetch, { Response } from 'node-fetch'; -import { ResponseError } from '@backstage/errors'; jest.mock('jenkins'); jest.mock('node-fetch'); @@ -54,17 +53,6 @@ const fakePermissionApi = { authorizeConditional: jest.fn(), }; -class NoErrorThrownError extends Error {} - -const getError = async (call: () => unknown): Promise => { - try { - await call(); - throw new NoErrorThrownError(); - } catch (error: unknown) { - return error as TError; - } -}; - describe('JenkinsApi', () => { const jenkinsApi = new JenkinsApiImpl(fakePermissionApi); const mockFetch = fetch as jest.MockedFunction; @@ -722,30 +710,6 @@ describe('JenkinsApi', () => { 'https://jenkins.example.com/job/example-jobName/job/foo/job/bar/19', ); }); - describe('getHeaders', () => { - const crumb = { crumb: 'foobar', crumbRequestField: '.crumb' }; - const json = jest.fn() as jest.MockedFunction; - json.mockResolvedValue(crumb); - const jenkinsInfoCrumb: JenkinsInfo = { ...jenkinsInfo, crumbIssuer: true }; - const jenkinsApiProto = Object.getPrototypeOf(jenkinsApi); - - it('adds crumb', async () => { - mockFetch.mockResolvedValueOnce({ ok: true, json } as Response); - const response = await jenkinsApiProto.getHeaders(jenkinsInfoCrumb); - expect(response).toEqual({ ...jenkinsInfo.headers, '.crumb': 'foobar' }); - }); - it('does not add crumb', async () => { - const response = await jenkinsApiProto.getHeaders(jenkinsInfo); - expect(response).toEqual(jenkinsInfo.headers); - }); - it('fails to get crumb', async () => { - mockFetch.mockResolvedValueOnce({ ok: false } as Response); - const error = await getError(async () => - jenkinsApiProto.getHeaders(jenkinsInfoCrumb), - ); - expect(error).toBeInstanceOf(ResponseError); - }); - }); describe('rebuildProject', () => { it('successfully rebuilds', async () => { mockFetch.mockResolvedValueOnce({ status: 200 } as Response); @@ -784,38 +748,5 @@ describe('JenkinsApi', () => { ); expect(status).toEqual(401); }); - - it('with crumbIssuer option', async () => { - const info: JenkinsInfo = { ...jenkinsInfo, crumbIssuer: true }; - mockFetch.mockResolvedValueOnce({ status: 200 } as Response); - const crumbHeaders = { headerName: 'headerValue', '.crumb': 'bar' }; - - const privateGetHeaders = jest.spyOn( - JenkinsApiImpl.prototype as any, - 'getHeaders', - ); - privateGetHeaders.mockImplementation(() => { - return crumbHeaders; - }); - - const status = await jenkinsApi.rebuildProject( - info, - jobFullName, - buildNumber, - resourceRef, - ); - expect(status).toEqual(200); - - type HeaderResponse = { - headerName: string; - '.crumb': string; - }; - type OptionResponse = { - headers: HeaderResponse; - method: string; - }; - const requestOptions: OptionResponse = mockFetch.mock.calls[0][1] as any; - expect(requestOptions.headers).toStrictEqual(crumbHeaders); - }); }); }); diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.ts b/plugins/jenkins-backend/src/service/jenkinsApi.ts index 135d695e18..53a35c974b 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.ts @@ -28,7 +28,6 @@ import { PermissionEvaluator, } from '@backstage/plugin-permission-common'; import { jenkinsExecutePermission } from '@backstage/plugin-jenkins-common'; -import { ResponseError } from '@backstage/errors'; import fetch, { HeaderInit } from 'node-fetch'; export class JenkinsApiImpl { @@ -165,13 +164,12 @@ export class JenkinsApiImpl { } const buildUrl = this.getBuildUrl(jenkinsInfo, jobFullName, buildNumber); - const headers = await this.getHeaders(jenkinsInfo); // the current SDK only supports triggering a new build // replay the job by triggering request directly from Jenkins api const response = await fetch(`${buildUrl}/replay/rebuild`, { method: 'post', - headers: headers, + headers: jenkinsInfo.headers as HeaderInit, }); return response.status; } @@ -331,36 +329,4 @@ export class JenkinsApiImpl { const jobs = jobFullName.split('/'); return `${jenkinsInfo.baseUrl}/job/${jobs.join('/job/')}/${buildId}`; } - - private async getHeaders(jenkinsInfo: JenkinsInfo): Promise { - let headers = jenkinsInfo.headers as HeaderInit; - if (!jenkinsInfo.crumbIssuer) { - return headers; - } - const response = await fetch( - `${jenkinsInfo.baseUrl}/crumbIssuer/api/json`, - { - method: 'get', - headers: headers, - }, - ); - if (!response.ok) { - throw ResponseError.fromResponse(response); - } - type CrumbResponse = { - crumb: string; - crumbRequestField: string; - }; - - const crumbJson: CrumbResponse = await response.json(); - if ('crumb' in crumbJson && 'crumbRequestField' in crumbJson) { - const headerObject = { - ...jenkinsInfo.headers, - [crumbJson.crumbRequestField]: crumbJson.crumb, - }; - headers = headerObject as HeaderInit; - } - - return headers; - } } From 46883605096a06b20db2beda7c8cd135be254901 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 12 May 2023 11:16:28 +0200 Subject: [PATCH 13/20] chore: tidy up the api-reports a little Signed-off-by: blam --- packages/backend-test-utils/api-report.md | 3 --- packages/backend-test-utils/src/database/types.ts | 2 +- packages/backend-test-utils/src/util/getDockerImageForName.ts | 1 - packages/backend-test-utils/src/util/index.ts | 1 - 4 files changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/backend-test-utils/api-report.md b/packages/backend-test-utils/api-report.md index 1ff3521869..358b51071f 100644 --- a/packages/backend-test-utils/api-report.md +++ b/packages/backend-test-utils/api-report.md @@ -25,9 +25,6 @@ import { ServiceRef } from '@backstage/backend-plugin-api'; import { TokenManagerService } from '@backstage/backend-plugin-api'; import { UrlReaderService } from '@backstage/backend-plugin-api'; -// @public (undocumented) -export const getDockerImageForName: (name: string) => string; - // @public (undocumented) export function isDockerDisabledForTests(): boolean; diff --git a/packages/backend-test-utils/src/database/types.ts b/packages/backend-test-utils/src/database/types.ts index c35d23c571..8c1d6f5193 100644 --- a/packages/backend-test-utils/src/database/types.ts +++ b/packages/backend-test-utils/src/database/types.ts @@ -16,7 +16,7 @@ import { DatabaseManager } from '@backstage/backend-common'; import { Knex } from 'knex'; -import { getDockerImageForName } from '../util'; +import { getDockerImageForName } from '../util/getDockerImageForName'; /** * The possible databases to test against. diff --git a/packages/backend-test-utils/src/util/getDockerImageForName.ts b/packages/backend-test-utils/src/util/getDockerImageForName.ts index a3e1958bf6..7869e7b418 100644 --- a/packages/backend-test-utils/src/util/getDockerImageForName.ts +++ b/packages/backend-test-utils/src/util/getDockerImageForName.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -/** @public */ export const getDockerImageForName = (name: string) => { return process.env.BACKSTAGE_TEST_DOCKER_REGISTRY ? `${process.env.BACKSTAGE_TEST_DOCKER_REGISTRY}/${name}` diff --git a/packages/backend-test-utils/src/util/index.ts b/packages/backend-test-utils/src/util/index.ts index 837af39028..a6cdc621d4 100644 --- a/packages/backend-test-utils/src/util/index.ts +++ b/packages/backend-test-utils/src/util/index.ts @@ -15,4 +15,3 @@ */ export { isDockerDisabledForTests } from './isDockerDisabledForTests'; -export { getDockerImageForName } from './getDockerImageForName'; From 05f584f84d33728cf0dbf2df2ef2e30ebc1a8a96 Mon Sep 17 00:00:00 2001 From: Patrick Jungermann Date: Mon, 6 Mar 2023 23:39:35 +0100 Subject: [PATCH 14/20] feat: add documented component to uffizzi environment So far, none of the components at the uffizzi environment have techdocs. Hence, there are no docs available within this environment and related features are not covered. This change will add an example from techdocs-backend plugin to the deployed examples. It was possible to register this catalog file manually, however the build of the docs fail due to missing Docker. To allow the generation of docs, we use the local generator (no docker in docker) and install required dependencies. As we don't want all dependencies for all (default) extensions to be installed at this environment, the original example at techdocs-backend plugin was copied and reduced (PlantUML extension example was removed). Signed-off-by: Patrick Jungermann --- .github/uffizzi/docker-compose.uffizzi.yml | 1 + .../uffizzi.production.app-config.yaml | 12 ++- .github/workflows/uffizzi-build.yml | 2 +- packages/backend/Dockerfile | 7 +- .../catalog-info.yaml | 12 +++ .../docs/code/code-sample.md | 31 ++++++ .../docs/extensions.md | 99 +++++++++++++++++++ .../docs/images/backstage-logo-cncf.svg | 1 + .../docs/index.md | 55 +++++++++++ .../docs/sub-page.md | 12 +++ .../documented-component-uffizzi/mkdocs.yml | 12 +++ 11 files changed, 237 insertions(+), 7 deletions(-) create mode 100644 plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml create mode 100644 plugins/techdocs-backend/examples/documented-component-uffizzi/docs/code/code-sample.md create mode 100644 plugins/techdocs-backend/examples/documented-component-uffizzi/docs/extensions.md create mode 100644 plugins/techdocs-backend/examples/documented-component-uffizzi/docs/images/backstage-logo-cncf.svg create mode 100644 plugins/techdocs-backend/examples/documented-component-uffizzi/docs/index.md create mode 100644 plugins/techdocs-backend/examples/documented-component-uffizzi/docs/sub-page.md create mode 100644 plugins/techdocs-backend/examples/documented-component-uffizzi/mkdocs.yml diff --git a/.github/uffizzi/docker-compose.uffizzi.yml b/.github/uffizzi/docker-compose.uffizzi.yml index 76a7b4eafc..f2e9bbeee6 100644 --- a/.github/uffizzi/docker-compose.uffizzi.yml +++ b/.github/uffizzi/docker-compose.uffizzi.yml @@ -14,6 +14,7 @@ services: POSTGRES_PORT: 5432 POSTGRES_USER: postgres POSTGRES_PASSWORD: kiTMoTsiEuyQ43GrL4Hv + REF_NAME: ${GITHUB_SHA} NODE_ENV: production deploy: resources: diff --git a/.github/uffizzi/uffizzi.production.app-config.yaml b/.github/uffizzi/uffizzi.production.app-config.yaml index 30cffa11c9..3b24c20b3d 100644 --- a/.github/uffizzi/uffizzi.production.app-config.yaml +++ b/.github/uffizzi/uffizzi.production.app-config.yaml @@ -28,6 +28,7 @@ backend: credentials: true csp: connect-src: ["'self'", 'http:', 'https:'] + img-src: ["'self'", 'data:', 'https://cdnjs.cloudflare.com'] # Content-Security-Policy directives follow the Helmet format: https://helmetjs.github.io/#reference # Default Helmet Content-Security-Policy values can be removed by setting the key to false @@ -41,15 +42,18 @@ auth: catalog: locations: - type: url - target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/all.yaml + target: https://github.com/backstage/backstage/blob/${REF_NAME}/packages/catalog-model/examples/all.yaml - type: url - target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme-corp.yaml + target: https://github.com/backstage/backstage/blob/${REF_NAME}/plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml + + - type: url + target: https://github.com/backstage/backstage/blob/${REF_NAME}/packages/catalog-model/examples/acme-corp.yaml rules: - allow: [User, Group] - type: url - target: https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/sample-templates/all-templates.yaml + target: https://github.com/backstage/backstage/blob/${REF_NAME}/plugins/scaffolder-backend/sample-templates/all-templates.yaml rules: - allow: [Template] @@ -124,7 +128,7 @@ proxy: techdocs: builder: 'local' # Alternatives - 'external' generator: - runIn: 'docker' + runIn: 'local' # dockerImage: my-org/techdocs # use a custom docker image # pullImage: true # or false to disable automatic pulling of image (e.g. if custom docker login is required) publisher: diff --git a/.github/workflows/uffizzi-build.yml b/.github/workflows/uffizzi-build.yml index ee629bbafe..1b031f50ad 100644 --- a/.github/workflows/uffizzi-build.yml +++ b/.github/workflows/uffizzi-build.yml @@ -81,7 +81,7 @@ jobs: BACKSTAGE_IMAGE=$(echo ${{ needs.build-backstage.outputs.tags }}) export BACKSTAGE_IMAGE # Render simple template from environment variables. - envsubst '$BACKSTAGE_IMAGE' < .github/uffizzi/docker-compose.uffizzi.yml > docker-compose.rendered.yml + envsubst '$BACKSTAGE_IMAGE $GITHUB_SHA' < .github/uffizzi/docker-compose.uffizzi.yml > docker-compose.rendered.yml cat docker-compose.rendered.yml - name: Upload Rendered Compose File as Artifact uses: actions/upload-artifact@v3 diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile index eca6ce82c2..da25f9736c 100644 --- a/packages/backend/Dockerfile +++ b/packages/backend/Dockerfile @@ -13,11 +13,14 @@ FROM node:16-bullseye-slim # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, # in which case you should also move better-sqlite3 to "devDependencies" in package.json. +# Additionally, we install dependencies for `techdocs.generator.runIn: local`. +# https://backstage.io/docs/features/techdocs/getting-started#disabling-docker-in-docker-situation-optional RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ - apt-get install -y --no-install-recommends libsqlite3-dev python3 build-essential && \ - yarn config set python /usr/bin/python3 + apt-get install -y --no-install-recommends libsqlite3-dev python3 python3-pip build-essential && \ + yarn config set python /usr/bin/python3 && \ + pip3 install mkdocs-techdocs-core==1.1.7 # From here on we use the least-privileged `node` user to run the backend. WORKDIR /app diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml b/plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml new file mode 100644 index 0000000000..a4d46593d3 --- /dev/null +++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/catalog-info.yaml @@ -0,0 +1,12 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: documented-component-uffizzi + title: Documented Component (Uffizzi) + description: A Service with TechDocs documentation. Excl. PlantUML extension. + annotations: + backstage.io/techdocs-ref: dir:. +spec: + type: service + lifecycle: experimental + owner: user:guest diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/code/code-sample.md b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/code/code-sample.md new file mode 100644 index 0000000000..f41ab1d506 --- /dev/null +++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/code/code-sample.md @@ -0,0 +1,31 @@ +# Sample Code + +This page provides some sample code which may be used in your example component. + +This code uses TypeScript, and the Markdown code fence to wrap the code. + +```typescript +const serviceEntityPage = ( + + + + + + + + + + + + +); +``` + +Here is an example of Python code: + +```python +def getUsersInGroup(targetGroup, secure=False): + + if __debug__: + print('targetGroup=[' + targetGroup + ']') +``` diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/extensions.md b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/extensions.md new file mode 100644 index 0000000000..2b101efdef --- /dev/null +++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/extensions.md @@ -0,0 +1,99 @@ +# Plugins & Extensions + +Just by including the TechDocs Core Plugin to your MkDocs site included with Backstage, +you gain the immediate use of a variety of popular plugins and extensions to MkDocs. + +For more information and full details of the available features, see the +[`mkdocs-techdocs-core` repository](https://github.com/backstage/mkdocs-techdocs-core#mkdocs-plugins-and-extensions). + +This page provides a demonstration of some of the available features. + +## Admonitions + +Admonitions are call outs that help catch a users attention. + +To define an admonition simply put the following Markdown into your content: + +``` +!!! warn + Defining admonitions can be addicting. +``` + +And they end up looking like this: + + +!!! warn + Defining admonitions can be addicting. + + +!!! note + You can learn a lot about TechDocs by just visiting the Backstage web site at + https://backstage.io/docs. + + +!!! info + TechDocs is the core feature that supports documentation as code in Backstage. + + +!!! tip + Don't forget to spell check your documentation. + +## Pymdownx Extensions + +Pymdownx (Python Markdown extensions) are a variety of smaller additions. + +### Details + + +??? note "What is the answer to life, the universe, and everything? (click me for the answer)" + The answer is 42. + + +??? note "What is 4 plus 4?" + The answer is 8. + + +???+ note "How do I get support?" + You can get support by opening an issue in this repository. This detail is open by default + so it's more easily visible without requiring the user to click to open it. + +### Task Lists + +Automatic rendering of Markdown task lists. + +- [x] Phase 1 +- [x] Phase 2 +- [ ] Phase 3 + +### Emojis + +Very nice job on documentation! :thumbsup: + +I've read a lot of documentation, but I love :heart: this document. + +Weather: :sunny: :umbrella: :cloud: :snowflake: + +Animals: :tiger: :horse: :turtle: :wolf: :frog: + +### Attributes + +[A Download Link](./images/backstage-logo-cncf.svg){: download } + +![A Scaled Image](./images/backstage-logo-cncf.svg){: style="width: 100px" } + +### MDX truly sane lists + +- `attributes` + +- `customer` + - `first_name` + - `test` + - `family_name` + - `email` +- `person` + - `first_name` + - `family_name` + - `birth_date` +- `subscription_id` + +- `request` diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/images/backstage-logo-cncf.svg b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/images/backstage-logo-cncf.svg new file mode 100644 index 0000000000..b5ff591d1b --- /dev/null +++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/images/backstage-logo-cncf.svg @@ -0,0 +1 @@ +05 Logo_Black \ No newline at end of file diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/index.md b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/index.md new file mode 100644 index 0000000000..6295a69406 --- /dev/null +++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/index.md @@ -0,0 +1,55 @@ +# Welcome! + +This is a basic example of documentation. It is intended as a showcase of some of the +features that TechDocs provides out of the box. + +You can see also: + +- [A sub page](sub-page.md) +- [Inline code examples](code/code-sample.md) +- [Plugin & Extension examples](extensions.md) - Diagrams, emojis, visual formatting. + +## Basic Markdown + +Headings: + +# h1 + +## h2 + +### h3 + +#### h4 + +##### h5 + +###### h6 + +Here is a bulleted list: + +- Item one +- Item two +- Item Three + +Check out the [Markdown Guide](https://www.markdownguide.org/) to learn more about how to +simply create documentation. + +You can also learn more about how to configure and setup this documentation in Backstage, +[read up on the TechDocs Overview](https://backstage.io/docs/features/techdocs/). + +## Image Example + +This documentation is powered by Backstage's TechDocs feature: + +![Backstage Logo](images/backstage-logo-cncf.svg) + +## Table Example + +While this documentation isn't comprehensive, in the future it should cover the following +topics outlined in this example table: + +| Topic | Description | +| ------- | ------------------------------------------------------------ | +| Topic 1 | An introductory topic to help you learn about the component. | +| Topic 2 | A more detailed topic that explains more information. | +| Topic 3 | A final topic that provides conclusions and lessons learned. | diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/sub-page.md b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/sub-page.md new file mode 100644 index 0000000000..987f5e8a95 --- /dev/null +++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/docs/sub-page.md @@ -0,0 +1,12 @@ +# Another page in our documentation + +This sub-page can be used to elaborate on a specific part of the component. + +## Details + +It is linked off the main page, and due to its inclusion in the `mkdocs.yml` file, +becomes part of the auto-generated site navigation. + +## MkDocs + +Visit https://www.mkdocs.org for more information about the MkDocs tool. diff --git a/plugins/techdocs-backend/examples/documented-component-uffizzi/mkdocs.yml b/plugins/techdocs-backend/examples/documented-component-uffizzi/mkdocs.yml new file mode 100644 index 0000000000..1a159a4d12 --- /dev/null +++ b/plugins/techdocs-backend/examples/documented-component-uffizzi/mkdocs.yml @@ -0,0 +1,12 @@ +site_name: 'Example Documentation' +repo_url: https://github.com/backstage/backstage +edit_uri: edit/master/plugins/techdocs-backend/examples/documented-component/docs + +nav: + - Home: index.md + - Subpage: sub-page.md + - 'Code Sample': code/code-sample.md + - Extensions: extensions.md + +plugins: + - techdocs-core From 3bd2518f1ffac89ca3790adf62716e295b4b3ce6 Mon Sep 17 00:00:00 2001 From: Jen Evans Date: Fri, 12 May 2023 10:51:38 -0700 Subject: [PATCH 15/20] Orphan cleanup - only log if entities were deleted Signed-off-by: Jen Evans --- .changeset/friendly-frogs-drop.md | 2 +- .../src/processing/DefaultCatalogProcessingEngine.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.changeset/friendly-frogs-drop.md b/.changeset/friendly-frogs-drop.md index a338bb3a7c..682f1dbabb 100644 --- a/.changeset/friendly-frogs-drop.md +++ b/.changeset/friendly-frogs-drop.md @@ -2,4 +2,4 @@ '@backstage/plugin-catalog-backend': patch --- -Change orphan cleanup task to debug log from info. +Change orphan cleanup task to only log a message if it deleted entities. diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts index c24698f7e9..8e2f8b2f6f 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts @@ -317,7 +317,9 @@ export class DefaultCatalogProcessingEngine implements CatalogProcessingEngine { try { await this.processingDatabase.transaction(async tx => { const n = await this.processingDatabase.deleteOrphanedEntities(tx); - this.logger.debug(`Deleted ${n} orphaned entities`); + if (n > 0) { + this.logger.info(`Deleted ${n} orphaned entities`); + } }); } catch (error) { this.logger.warn(`Failed to delete orphaned entities`, error); From a73b3c0b097ded0d3a0b843b3d42a704b4e8f22d Mon Sep 17 00:00:00 2001 From: Andreas Berger Date: Thu, 11 May 2023 10:40:04 +0200 Subject: [PATCH 16/20] Add ability to use `defaultNamespace` and `defaultKind` for scaffolder action `catalog:fetch` Signed-off-by: Andreas Berger --- .changeset/giant-students-lie.md | 5 + plugins/scaffolder-backend/api-report.md | 2 + .../actions/builtin/catalog/fetch.test.ts | 354 +++++++++++------- .../actions/builtin/catalog/fetch.ts | 28 +- 4 files changed, 242 insertions(+), 147 deletions(-) create mode 100644 .changeset/giant-students-lie.md diff --git a/.changeset/giant-students-lie.md b/.changeset/giant-students-lie.md new file mode 100644 index 0000000000..fdcb406296 --- /dev/null +++ b/.changeset/giant-students-lie.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Add ability to use `defaultNamespace` and `defaultKind` for scaffolder action `catalog:fetch` diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index c87521151b..07dd5eaf1d 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -119,6 +119,8 @@ export function createFetchCatalogEntityAction(options: { entityRef?: string | undefined; entityRefs?: string[] | undefined; optional?: boolean | undefined; + defaultKind?: string | undefined; + defaultNamespace?: string | undefined; }, { entity?: any; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.test.ts index 1cce7d66cb..bed15f2e39 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.test.ts @@ -46,179 +46,249 @@ describe('catalog:fetch', () => { jest.resetAllMocks(); }); - it('should return entity from catalog', async () => { - getEntityByRef.mockReturnValueOnce({ - metadata: { - namespace: 'default', - name: 'test', - }, - kind: 'Component', - } as Entity); - - await action.handler({ - ...mockContext, - input: { - entityRef: 'component:default/test', - }, - }); - - expect(getEntityByRef).toHaveBeenCalledWith('component:default/test', { - token: 'secret', - }); - expect(mockContext.output).toHaveBeenCalledWith('entity', { - metadata: { - namespace: 'default', - name: 'test', - }, - kind: 'Component', - }); - }); - - it('should throw error if entity fetch fails from catalog and optional is false', async () => { - getEntityByRef.mockImplementationOnce(() => { - throw new Error('Not found'); - }); - - await expect( - action.handler({ - ...mockContext, - input: { - entityRef: 'component:default/test', - }, - }), - ).rejects.toThrow('Not found'); - - expect(getEntityByRef).toHaveBeenCalledWith('component:default/test', { - token: 'secret', - }); - expect(mockContext.output).not.toHaveBeenCalled(); - }); - - it('should throw error if entity not in catalog and optional is false', async () => { - getEntityByRef.mockReturnValueOnce(null); - - await expect( - action.handler({ - ...mockContext, - input: { - entityRef: 'component:default/test', - }, - }), - ).rejects.toThrow('Entity component:default/test not found'); - - expect(getEntityByRef).toHaveBeenCalledWith('component:default/test', { - token: 'secret', - }); - expect(mockContext.output).not.toHaveBeenCalled(); - }); - - it('should return entities from catalog', async () => { - getEntitiesByRefs.mockReturnValueOnce({ - items: [ - { - metadata: { - namespace: 'default', - name: 'test', - }, - kind: 'Component', - } as Entity, - ], - }); - - await action.handler({ - ...mockContext, - input: { - entityRefs: ['component:default/test'], - }, - }); - - expect(getEntitiesByRefs).toHaveBeenCalledWith( - { entityRefs: ['component:default/test'] }, - { - token: 'secret', - }, - ); - expect(mockContext.output).toHaveBeenCalledWith('entities', [ - { + describe('fetch single entity', () => { + it('should return entity from catalog', async () => { + getEntityByRef.mockReturnValueOnce({ metadata: { namespace: 'default', name: 'test', }, kind: 'Component', - }, - ]); + } as Entity); + + await action.handler({ + ...mockContext, + input: { + entityRef: 'component:default/test', + }, + }); + + expect(getEntityByRef).toHaveBeenCalledWith('component:default/test', { + token: 'secret', + }); + expect(mockContext.output).toHaveBeenCalledWith('entity', { + metadata: { + namespace: 'default', + name: 'test', + }, + kind: 'Component', + }); + }); + + it('should throw error if entity fetch fails from catalog and optional is false', async () => { + getEntityByRef.mockImplementationOnce(() => { + throw new Error('Not found'); + }); + + await expect( + action.handler({ + ...mockContext, + input: { + entityRef: 'component:default/test', + }, + }), + ).rejects.toThrow('Not found'); + + expect(getEntityByRef).toHaveBeenCalledWith('component:default/test', { + token: 'secret', + }); + expect(mockContext.output).not.toHaveBeenCalled(); + }); + + it('should throw error if entity not in catalog and optional is false', async () => { + getEntityByRef.mockReturnValueOnce(null); + + await expect( + action.handler({ + ...mockContext, + input: { + entityRef: 'component:default/test', + }, + }), + ).rejects.toThrow('Entity component:default/test not found'); + + expect(getEntityByRef).toHaveBeenCalledWith('component:default/test', { + token: 'secret', + }); + expect(mockContext.output).not.toHaveBeenCalled(); + }); + + it('should use defaultKind and defaultNamespace if provided', async () => { + const entity: Entity = { + metadata: { + namespace: 'ns', + name: 'test', + }, + kind: 'Group', + } as Entity; + getEntityByRef.mockReturnValueOnce(entity); + + await action.handler({ + ...mockContext, + input: { + entityRef: 'test', + defaultKind: 'Group', + defaultNamespace: 'ns', + }, + }); + + expect(getEntityByRef).toHaveBeenCalledWith('group:ns/test', { + token: 'secret', + }); + expect(mockContext.output).toHaveBeenCalledWith('entity', entity); + }); }); - it('should throw error if undefined is returned for some entity', async () => { - getEntitiesByRefs.mockReturnValueOnce({ - items: [ + describe('fetch multiple entities', () => { + it('should return entities from catalog', async () => { + getEntitiesByRefs.mockReturnValueOnce({ + items: [ + { + metadata: { + namespace: 'default', + name: 'test', + }, + kind: 'Component', + } as Entity, + ], + }); + + await action.handler({ + ...mockContext, + input: { + entityRefs: ['component:default/test'], + }, + }); + + expect(getEntitiesByRefs).toHaveBeenCalledWith( + { entityRefs: ['component:default/test'] }, + { + token: 'secret', + }, + ); + expect(mockContext.output).toHaveBeenCalledWith('entities', [ { metadata: { namespace: 'default', name: 'test', }, kind: 'Component', - } as Entity, - undefined, - ], + }, + ]); }); - await expect( - action.handler({ + it('should throw error if undefined is returned for some entity', async () => { + getEntitiesByRefs.mockReturnValueOnce({ + items: [ + { + metadata: { + namespace: 'default', + name: 'test', + }, + kind: 'Component', + } as Entity, + undefined, + ], + }); + + await expect( + action.handler({ + ...mockContext, + input: { + entityRefs: ['component:default/test', 'component:default/test2'], + optional: false, + }, + }), + ).rejects.toThrow('Entity component:default/test2 not found'); + + expect(getEntitiesByRefs).toHaveBeenCalledWith( + { entityRefs: ['component:default/test', 'component:default/test2'] }, + { + token: 'secret', + }, + ); + expect(mockContext.output).not.toHaveBeenCalled(); + }); + + it('should return null in case some of the entities not found and optional is true', async () => { + getEntitiesByRefs.mockReturnValueOnce({ + items: [ + { + metadata: { + namespace: 'default', + name: 'test', + }, + kind: 'Component', + } as Entity, + undefined, + ], + }); + + await action.handler({ ...mockContext, input: { entityRefs: ['component:default/test', 'component:default/test2'], - optional: false, + optional: true, }, - }), - ).rejects.toThrow('Entity component:default/test2 not found'); + }); - expect(getEntitiesByRefs).toHaveBeenCalledWith( - { entityRefs: ['component:default/test', 'component:default/test2'] }, - { - token: 'secret', - }, - ); - expect(mockContext.output).not.toHaveBeenCalled(); - }); - - it('should return null in case some of the entities not found and optional is true', async () => { - getEntitiesByRefs.mockReturnValueOnce({ - items: [ + expect(getEntitiesByRefs).toHaveBeenCalledWith( + { entityRefs: ['component:default/test', 'component:default/test2'] }, + { + token: 'secret', + }, + ); + expect(mockContext.output).toHaveBeenCalledWith('entities', [ { metadata: { namespace: 'default', name: 'test', }, kind: 'Component', - } as Entity, - undefined, - ], + }, + null, + ]); }); - await action.handler({ - ...mockContext, - input: { - entityRefs: ['component:default/test', 'component:default/test2'], - optional: true, - }, - }); - - expect(getEntitiesByRefs).toHaveBeenCalledWith( - { entityRefs: ['component:default/test', 'component:default/test2'] }, - { - token: 'secret', - }, - ); - expect(mockContext.output).toHaveBeenCalledWith('entities', [ - { + it('should use defaultKind and defaultNamespace if provided', async () => { + const entity1: Entity = { + metadata: { + namespace: 'ns', + name: 'test', + }, + kind: 'Group', + } as Entity; + const entity2: Entity = { metadata: { namespace: 'default', name: 'test', }, - kind: 'Component', - }, - null, - ]); + kind: 'User', + } as Entity; + getEntitiesByRefs.mockReturnValueOnce({ + items: [entity1, entity2], + }); + + await action.handler({ + ...mockContext, + input: { + entityRefs: ['test', 'user:default/test'], + defaultKind: 'Group', + defaultNamespace: 'ns', + }, + }); + + expect(getEntitiesByRefs).toHaveBeenCalledWith( + { entityRefs: ['group:ns/test', 'user:default/test'] }, + { + token: 'secret', + }, + ); + + expect(mockContext.output).toHaveBeenCalledWith('entities', [ + entity1, + entity2, + ]); + }); }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.ts index d6abeee792..437da8ae73 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.ts @@ -18,6 +18,7 @@ import { CatalogApi } from '@backstage/catalog-client'; import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; import yaml from 'yaml'; import { z } from 'zod'; +import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model'; const id = 'catalog:fetch'; @@ -69,6 +70,7 @@ export function createFetchCatalogEntityAction(options: { description: 'Returns entity or entities from the catalog by entity reference(s)', examples, + supportsDryRun: true, schema: { input: z.object({ entityRef: z @@ -87,6 +89,10 @@ export function createFetchCatalogEntityAction(options: { 'Allow the entity or entities to optionally exist. Default: false', }) .optional(), + defaultKind: z.string({ description: 'The default kind' }).optional(), + defaultNamespace: z + .string({ description: 'The default namespace' }) + .optional(), }), output: z.object({ entity: z @@ -106,7 +112,8 @@ export function createFetchCatalogEntityAction(options: { }), }, async handler(ctx) { - const { entityRef, entityRefs, optional } = ctx.input; + const { entityRef, entityRefs, optional, defaultKind, defaultNamespace } = + ctx.input; if (!entityRef && !entityRefs) { if (optional) { return; @@ -115,9 +122,14 @@ export function createFetchCatalogEntityAction(options: { } if (entityRef) { - const entity = await catalogClient.getEntityByRef(entityRef, { - token: ctx.secrets?.backstageToken, - }); + const entity = await catalogClient.getEntityByRef( + stringifyEntityRef( + parseEntityRef(entityRef, { defaultKind, defaultNamespace }), + ), + { + token: ctx.secrets?.backstageToken, + }, + ); if (!entity && !optional) { throw new Error(`Entity ${entityRef} not found`); @@ -127,7 +139,13 @@ export function createFetchCatalogEntityAction(options: { if (entityRefs) { const entities = await catalogClient.getEntitiesByRefs( - { entityRefs }, + { + entityRefs: entityRefs.map(ref => + stringifyEntityRef( + parseEntityRef(ref, { defaultKind, defaultNamespace }), + ), + ), + }, { token: ctx.secrets?.backstageToken, }, From 046196a0c5a61855575faafb2ac16af7464ed364 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 16 May 2023 10:34:59 +0200 Subject: [PATCH 17/20] changesets: add inline codeblock for itchy impalas fold Signed-off-by: Patrik Oldsberg --- .changeset/itchy-impalas-fold.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/itchy-impalas-fold.md b/.changeset/itchy-impalas-fold.md index 68eee105ff..31840124ad 100644 --- a/.changeset/itchy-impalas-fold.md +++ b/.changeset/itchy-impalas-fold.md @@ -6,4 +6,4 @@ '@backstage/plugin-techdocs-node': patch --- -Standardize @aws-sdk v3 versions +Standardize `@aws-sdk` v3 versions From 73e7820731de24a778eaddc0f3e263aed431f82e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 16 May 2023 09:38:40 +0000 Subject: [PATCH 18/20] Version Packages --- .changeset/afraid-shirts-train.md | 10 - .changeset/angry-ducks-shake.md | 5 - .changeset/backend-like-a-tattoo.md | 5 - .changeset/beige-tigers-matter.md | 5 - .changeset/big-days-press.md | 7 - .changeset/blue-eyes-run.md | 7 - .changeset/brown-eyes-yell.md | 5 - .changeset/brown-keys-raise.md | 7 - .changeset/brown-meals-trade.md | 5 - .changeset/calm-buttons-type.md | 5 - .changeset/calm-snails-trade.md | 5 - .changeset/calm-wolves-taste.md | 5 - .changeset/chilled-goats-jump.md | 5 - .changeset/chilled-pants-wonder.md | 5 - .changeset/chilled-queens-wonder.md | 5 - .changeset/chilly-fireants-type.md | 5 - .changeset/chilly-taxis-shop.md | 5 - .changeset/clean-lobsters-brake.md | 7 - .changeset/clever-coins-deny.md | 5 - .changeset/cold-drinks-exercise.md | 5 - .changeset/cold-laws-turn.md | 5 - .changeset/cool-dingos-repair.md | 5 - .changeset/create-app-1682437922.md | 5 - .changeset/curly-rats-fold.md | 5 - .changeset/curvy-months-appear.md | 5 - .changeset/dry-boats-sniff.md | 10 - .changeset/dull-wombats-stare.md | 5 - .changeset/eighty-olives-live.md | 5 - .changeset/eleven-taxis-notice.md | 7 - .changeset/extragavent-fast-fly.md | 10 - .changeset/fair-suits-warn.md | 5 - .changeset/fast-wasps-peel.md | 5 - .changeset/fifty-grapes-explode.md | 5 - .changeset/fifty-laws-count.md | 5 - .changeset/five-lies-confess.md | 5 - .changeset/five-tigers-whisper.md | 5 - .changeset/fluffy-crabs-reply.md | 5 - .changeset/fluffy-mirrors-happen.md | 7 - .changeset/fresh-moons-unite.md | 5 - .changeset/friendly-frogs-drop.md | 5 - .changeset/funny-cups-count.md | 5 - .changeset/funny-trains-sniff.md | 25 - .changeset/giant-students-lie.md | 5 - .changeset/gold-vans-sin.md | 10 - .changeset/good-lions-approve.md | 5 - .changeset/green-cheetahs-cover.md | 5 - .changeset/healthy-ladybugs-chew.md | 5 - .changeset/heavy-penguins-burn.md | 6 - .changeset/honest-comics-ring.md | 5 - .changeset/honest-countries-deny.md | 5 - .changeset/honest-turkeys-learn.md | 5 - .changeset/hungry-countries-enjoy.md | 5 - .changeset/hungry-foxes-divide.md | 5 - .changeset/hungry-peas-sing.md | 5 - .changeset/itchy-impalas-fold.md | 9 - .changeset/khaki-brooms-kiss.md | 5 - .changeset/late-lizards-unite.md | 5 - .changeset/lazy-keys-work.md | 5 - .changeset/mighty-bears-glow.md | 10 - .changeset/mighty-cows-greet.md | 5 - .changeset/modern-pumpkins-join.md | 5 - .changeset/moody-lizards-beam.md | 40 - .changeset/moody-shrimps-train.md | 5 - .changeset/new-roses-fail.md | 16 - .changeset/nice-ants-type.md | 5 - .changeset/nine-planes-carry.md | 5 - .changeset/nine-ties-smoke.md | 5 - .changeset/ninety-eggs-lie.md | 6 - .changeset/ninety-mugs-sin.md | 5 - .changeset/olive-turkeys-switch.md | 5 - .changeset/polite-dingos-train.md | 33 - .changeset/pre.json | 308 -- .changeset/pretty-gifts-greet.md | 5 - .changeset/proud-chairs-sleep.md | 5 - .changeset/quick-flies-guess.md | 5 - .changeset/quiet-bikes-smash.md | 5 - .changeset/quiet-stingrays-fly.md | 5 - .changeset/rare-elephants-arrive.md | 5 - .changeset/real-baboons-vanish.md | 8 - .changeset/red-cheetahs-invite.md | 6 - .changeset/red-parrots-attack.md | 5 - .changeset/rotten-chefs-jog.md | 10 - .changeset/serious-hornets-remember.md | 5 - .changeset/serious-phones-flash.md | 5 - .changeset/shy-worms-enjoy.md | 6 - .changeset/six-mails-shout.md | 5 - .changeset/sixty-falcons-protect.md | 5 - .changeset/slimy-turkeys-return.md | 22 - .changeset/soft-readers-exist.md | 5 - .changeset/spicy-spies-warn.md | 7 - .changeset/spotty-walls-serve.md | 5 - .changeset/stupid-seas-stare.md | 5 - .changeset/swift-fishes-run.md | 5 - .changeset/swift-students-type.md | 5 - .changeset/thick-parents-pump.md | 6 - .changeset/thick-pugs-rush.md | 5 - .changeset/thin-ways-exist.md | 5 - .changeset/thirty-jobs-sort.md | 5 - .changeset/three-tools-pump.md | 5 - .changeset/tiny-crews-pull.md | 5 - .changeset/tough-moles-whisper.md | 5 - .changeset/twelve-birds-boil.md | 5 - .changeset/twelve-zebras-repair.md | 5 - .changeset/two-gorillas-drop.md | 5 - .changeset/unlucky-deers-teach.md | 7 - .changeset/unlucky-plants-give.md | 5 - .changeset/warm-lamps-tease.md | 7 - .changeset/wet-dolphins-love.md | 5 - docs/releases/v1.14.0-changelog.md | 2795 +++++++++++++++++ package.json | 2 +- packages/app-defaults/CHANGELOG.md | 18 + packages/app-defaults/package.json | 2 +- packages/app/CHANGELOG.md | 72 + packages/app/package.json | 2 +- packages/backend-app-api/CHANGELOG.md | 17 + packages/backend-app-api/package.json | 2 +- packages/backend-common/CHANGELOG.md | 20 + packages/backend-common/package.json | 2 +- packages/backend-defaults/CHANGELOG.md | 9 + packages/backend-defaults/package.json | 2 +- packages/backend-next/CHANGELOG.md | 22 + packages/backend-next/package.json | 2 +- packages/backend-openapi-utils/CHANGELOG.md | 9 + packages/backend-openapi-utils/package.json | 2 +- packages/backend-plugin-api/CHANGELOG.md | 11 + packages/backend-plugin-api/package.json | 2 +- packages/backend-tasks/CHANGELOG.md | 10 + packages/backend-tasks/package.json | 2 +- packages/backend-test-utils/CHANGELOG.md | 14 + packages/backend-test-utils/package.json | 2 +- packages/backend/CHANGELOG.md | 52 + packages/backend/package.json | 2 +- packages/cli/CHANGELOG.md | 16 + packages/cli/package.json | 2 +- packages/config-loader/CHANGELOG.md | 51 + packages/config-loader/package.json | 2 +- packages/core-app-api/CHANGELOG.md | 16 + packages/core-app-api/package.json | 2 +- packages/core-components/CHANGELOG.md | 15 + packages/core-components/package.json | 2 +- packages/create-app/CHANGELOG.md | 9 + packages/create-app/package.json | 2 +- packages/dev-utils/CHANGELOG.md | 15 + packages/dev-utils/package.json | 2 +- packages/e2e-test/CHANGELOG.md | 9 + packages/e2e-test/package.json | 2 +- packages/integration-aws-node/CHANGELOG.md | 9 + packages/integration-aws-node/package.json | 2 +- packages/integration-react/CHANGELOG.md | 11 + packages/integration-react/package.json | 2 +- packages/integration/CHANGELOG.md | 9 + packages/integration/package.json | 2 +- packages/repo-tools/CHANGELOG.md | 14 + packages/repo-tools/package.json | 2 +- .../techdocs-cli-embedded-app/CHANGELOG.md | 19 + .../techdocs-cli-embedded-app/package.json | 2 +- packages/techdocs-cli/CHANGELOG.md | 11 + packages/techdocs-cli/package.json | 2 +- packages/test-utils/CHANGELOG.md | 13 + packages/test-utils/package.json | 2 +- packages/theme/CHANGELOG.md | 10 + packages/theme/package.json | 2 +- plugins/adr-backend/CHANGELOG.md | 14 + plugins/adr-backend/package.json | 2 +- plugins/adr-common/CHANGELOG.md | 9 + plugins/adr-common/package.json | 2 +- plugins/adr/CHANGELOG.md | 19 + plugins/adr/package.json | 2 +- plugins/airbrake-backend/CHANGELOG.md | 8 + plugins/airbrake-backend/package.json | 2 +- plugins/airbrake/CHANGELOG.md | 13 + plugins/airbrake/package.json | 2 +- plugins/allure/CHANGELOG.md | 11 + plugins/allure/package.json | 2 +- plugins/analytics-module-ga/CHANGELOG.md | 10 + plugins/analytics-module-ga/package.json | 2 +- plugins/analytics-module-ga4/CHANGELOG.md | 14 + plugins/analytics-module-ga4/package.json | 2 +- plugins/apache-airflow/CHANGELOG.md | 8 + plugins/apache-airflow/package.json | 2 +- plugins/api-docs/CHANGELOG.md | 12 + plugins/api-docs/package.json | 2 +- plugins/apollo-explorer/CHANGELOG.md | 9 + plugins/apollo-explorer/package.json | 2 +- plugins/app-backend/CHANGELOG.md | 11 + plugins/app-backend/package.json | 2 +- plugins/auth-backend/CHANGELOG.md | 16 + plugins/auth-backend/package.json | 2 +- plugins/auth-node/CHANGELOG.md | 9 + plugins/auth-node/package.json | 2 +- plugins/azure-devops-backend/CHANGELOG.md | 9 + plugins/azure-devops-backend/package.json | 2 +- plugins/azure-devops/CHANGELOG.md | 17 + plugins/azure-devops/package.json | 2 +- plugins/azure-sites-backend/CHANGELOG.md | 10 + plugins/azure-sites-backend/package.json | 2 +- plugins/azure-sites/CHANGELOG.md | 12 + plugins/azure-sites/package.json | 2 +- plugins/badges-backend/CHANGELOG.md | 21 + plugins/badges-backend/package.json | 2 +- plugins/badges/CHANGELOG.md | 18 + plugins/badges/package.json | 2 +- plugins/bazaar-backend/CHANGELOG.md | 11 + plugins/bazaar-backend/package.json | 2 +- plugins/bazaar/CHANGELOG.md | 16 + plugins/bazaar/package.json | 2 +- plugins/bitbucket-cloud-common/CHANGELOG.md | 7 + plugins/bitbucket-cloud-common/package.json | 2 +- plugins/bitrise/CHANGELOG.md | 11 + plugins/bitrise/package.json | 2 +- .../catalog-backend-module-aws/CHANGELOG.md | 22 + .../catalog-backend-module-aws/package.json | 2 +- .../catalog-backend-module-azure/CHANGELOG.md | 16 + .../catalog-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 17 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 27 + .../package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- .../catalog-backend-module-ldap/CHANGELOG.md | 13 + .../catalog-backend-module-ldap/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- plugins/catalog-backend/CHANGELOG.md | 29 + plugins/catalog-backend/package.json | 2 +- plugins/catalog-customized/CHANGELOG.md | 8 + plugins/catalog-customized/package.json | 2 +- plugins/catalog-graph/CHANGELOG.md | 13 + plugins/catalog-graph/package.json | 2 +- plugins/catalog-import/CHANGELOG.md | 16 + plugins/catalog-import/package.json | 2 +- plugins/catalog-node/CHANGELOG.md | 12 + plugins/catalog-node/package.json | 2 +- plugins/catalog-react/CHANGELOG.md | 41 + plugins/catalog-react/package.json | 2 +- plugins/catalog/CHANGELOG.md | 41 + plugins/catalog/package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/cicd-statistics/CHANGELOG.md | 9 + plugins/cicd-statistics/package.json | 2 +- plugins/circleci/CHANGELOG.md | 13 + plugins/circleci/package.json | 2 +- plugins/cloudbuild/CHANGELOG.md | 11 + plugins/cloudbuild/package.json | 2 +- plugins/code-climate/CHANGELOG.md | 11 + plugins/code-climate/package.json | 2 +- plugins/code-coverage-backend/CHANGELOG.md | 12 + plugins/code-coverage-backend/package.json | 2 +- plugins/code-coverage/CHANGELOG.md | 13 + plugins/code-coverage/package.json | 2 +- plugins/codescene/CHANGELOG.md | 11 + plugins/codescene/package.json | 2 +- plugins/config-schema/CHANGELOG.md | 12 + plugins/config-schema/package.json | 2 +- plugins/cost-insights/CHANGELOG.md | 13 + plugins/cost-insights/package.json | 2 +- plugins/devtools-backend/CHANGELOG.md | 20 + plugins/devtools-backend/package.json | 2 +- plugins/devtools-common/CHANGELOG.md | 12 + plugins/devtools-common/package.json | 2 +- plugins/devtools/CHANGELOG.md | 17 + plugins/devtools/package.json | 2 +- plugins/dynatrace/CHANGELOG.md | 11 + plugins/dynatrace/package.json | 2 +- plugins/entity-feedback-backend/CHANGELOG.md | 12 + plugins/entity-feedback-backend/package.json | 2 +- plugins/entity-feedback/CHANGELOG.md | 13 + plugins/entity-feedback/package.json | 2 +- plugins/entity-validation/CHANGELOG.md | 14 + plugins/entity-validation/package.json | 2 +- .../CHANGELOG.md | 17 + .../package.json | 2 +- .../events-backend-module-azure/CHANGELOG.md | 8 + .../events-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../events-backend-module-gerrit/CHANGELOG.md | 8 + .../events-backend-module-gerrit/package.json | 2 +- .../events-backend-module-github/CHANGELOG.md | 9 + .../events-backend-module-github/package.json | 2 +- .../events-backend-module-gitlab/CHANGELOG.md | 9 + .../events-backend-module-gitlab/package.json | 2 +- .../events-backend-test-utils/CHANGELOG.md | 7 + .../events-backend-test-utils/package.json | 2 +- plugins/events-backend/CHANGELOG.md | 10 + plugins/events-backend/package.json | 2 +- plugins/events-node/CHANGELOG.md | 7 + plugins/events-node/package.json | 2 +- .../example-todo-list-backend/CHANGELOG.md | 11 + .../example-todo-list-backend/package.json | 2 +- plugins/example-todo-list/CHANGELOG.md | 9 + plugins/example-todo-list/package.json | 2 +- plugins/explore-backend/CHANGELOG.md | 11 + plugins/explore-backend/package.json | 2 +- plugins/explore/CHANGELOG.md | 19 + plugins/explore/package.json | 2 +- plugins/firehydrant/CHANGELOG.md | 11 + plugins/firehydrant/package.json | 2 +- plugins/fossa/CHANGELOG.md | 12 + plugins/fossa/package.json | 2 +- plugins/gcalendar/CHANGELOG.md | 11 + plugins/gcalendar/package.json | 2 +- plugins/gcp-projects/CHANGELOG.md | 9 + plugins/gcp-projects/package.json | 2 +- plugins/git-release-manager/CHANGELOG.md | 10 + plugins/git-release-manager/package.json | 2 +- plugins/github-actions/CHANGELOG.md | 12 + plugins/github-actions/package.json | 2 +- plugins/github-deployments/CHANGELOG.md | 14 + plugins/github-deployments/package.json | 2 +- plugins/github-issues/CHANGELOG.md | 13 + plugins/github-issues/package.json | 2 +- .../github-pull-requests-board/CHANGELOG.md | 13 + .../github-pull-requests-board/package.json | 2 +- plugins/gitops-profiles/CHANGELOG.md | 10 + plugins/gitops-profiles/package.json | 2 +- plugins/gocd/CHANGELOG.md | 12 + plugins/gocd/package.json | 2 +- plugins/graphiql/CHANGELOG.md | 9 + plugins/graphiql/package.json | 2 +- plugins/graphql-backend/CHANGELOG.md | 9 + plugins/graphql-backend/package.json | 2 +- plugins/graphql-voyager/CHANGELOG.md | 9 + plugins/graphql-voyager/package.json | 2 +- plugins/home/CHANGELOG.md | 16 + plugins/home/package.json | 2 +- plugins/ilert/CHANGELOG.md | 12 + plugins/ilert/package.json | 2 +- plugins/jenkins-backend/CHANGELOG.md | 21 + plugins/jenkins-backend/package.json | 2 +- plugins/jenkins/CHANGELOG.md | 19 + plugins/jenkins/package.json | 2 +- plugins/kafka-backend/CHANGELOG.md | 11 + plugins/kafka-backend/package.json | 2 +- plugins/kafka/CHANGELOG.md | 12 + plugins/kafka/package.json | 2 +- plugins/kubernetes-backend/CHANGELOG.md | 33 + plugins/kubernetes-backend/package.json | 2 +- plugins/kubernetes-common/CHANGELOG.md | 9 + plugins/kubernetes-common/package.json | 2 +- plugins/kubernetes/CHANGELOG.md | 50 + plugins/kubernetes/package.json | 2 +- plugins/lighthouse-backend/CHANGELOG.md | 13 + plugins/lighthouse-backend/package.json | 2 +- plugins/lighthouse/CHANGELOG.md | 13 + plugins/lighthouse/package.json | 2 +- plugins/linguist-backend/CHANGELOG.md | 15 + plugins/linguist-backend/package.json | 2 +- plugins/linguist/CHANGELOG.md | 13 + plugins/linguist/package.json | 2 +- plugins/microsoft-calendar/CHANGELOG.md | 10 + plugins/microsoft-calendar/package.json | 2 +- plugins/newrelic-dashboard/CHANGELOG.md | 11 + plugins/newrelic-dashboard/package.json | 2 +- plugins/newrelic/CHANGELOG.md | 9 + plugins/newrelic/package.json | 2 +- plugins/octopus-deploy/CHANGELOG.md | 16 + plugins/octopus-deploy/package.json | 2 +- plugins/org-react/CHANGELOG.md | 12 + plugins/org-react/package.json | 2 +- plugins/org/CHANGELOG.md | 24 + plugins/org/package.json | 2 +- plugins/pagerduty/CHANGELOG.md | 12 + plugins/pagerduty/package.json | 2 +- plugins/periskop-backend/CHANGELOG.md | 9 + plugins/periskop-backend/package.json | 2 +- plugins/periskop/CHANGELOG.md | 12 + plugins/periskop/package.json | 2 +- plugins/permission-backend/CHANGELOG.md | 13 + plugins/permission-backend/package.json | 2 +- plugins/permission-node/CHANGELOG.md | 31 + plugins/permission-node/package.json | 2 +- plugins/playlist-backend/CHANGELOG.md | 15 + plugins/playlist-backend/package.json | 2 +- plugins/playlist/CHANGELOG.md | 17 + plugins/playlist/package.json | 2 +- plugins/proxy-backend/CHANGELOG.md | 9 + plugins/proxy-backend/package.json | 2 +- plugins/puppetdb/CHANGELOG.md | 12 + plugins/puppetdb/package.json | 2 +- plugins/rollbar-backend/CHANGELOG.md | 8 + plugins/rollbar-backend/package.json | 2 +- plugins/rollbar/CHANGELOG.md | 11 + plugins/rollbar/package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 21 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/scaffolder-backend/CHANGELOG.md | 34 + plugins/scaffolder-backend/package.json | 2 +- plugins/scaffolder-common/CHANGELOG.md | 16 + plugins/scaffolder-common/package.json | 2 +- plugins/scaffolder-node/CHANGELOG.md | 11 + plugins/scaffolder-node/package.json | 2 +- plugins/scaffolder-react/CHANGELOG.md | 26 + plugins/scaffolder-react/package.json | 2 +- plugins/scaffolder/CHANGELOG.md | 28 + plugins/scaffolder/package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- plugins/search-backend-module-pg/CHANGELOG.md | 11 + plugins/search-backend-module-pg/package.json | 2 +- .../CHANGELOG.md | 17 + .../package.json | 2 +- plugins/search-backend-node/CHANGELOG.md | 13 + plugins/search-backend-node/package.json | 2 +- plugins/search-backend/CHANGELOG.md | 17 + plugins/search-backend/package.json | 2 +- plugins/search-react/CHANGELOG.md | 24 + plugins/search-react/package.json | 2 +- plugins/search/CHANGELOG.md | 26 + plugins/search/package.json | 2 +- plugins/sentry/CHANGELOG.md | 11 + plugins/sentry/package.json | 2 +- plugins/shortcuts/CHANGELOG.md | 11 + plugins/shortcuts/package.json | 2 +- plugins/sonarqube-backend/CHANGELOG.md | 9 + plugins/sonarqube-backend/package.json | 2 +- plugins/sonarqube/CHANGELOG.md | 12 + plugins/sonarqube/package.json | 2 +- plugins/splunk-on-call/CHANGELOG.md | 11 + plugins/splunk-on-call/package.json | 2 +- plugins/stack-overflow-backend/CHANGELOG.md | 9 + plugins/stack-overflow-backend/package.json | 2 +- plugins/stack-overflow/CHANGELOG.md | 14 + plugins/stack-overflow/package.json | 2 +- plugins/stackstorm/CHANGELOG.md | 10 + plugins/stackstorm/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- plugins/tech-insights-backend/CHANGELOG.md | 15 + plugins/tech-insights-backend/package.json | 2 +- plugins/tech-insights-node/CHANGELOG.md | 11 + plugins/tech-insights-node/package.json | 2 +- plugins/tech-insights/CHANGELOG.md | 21 + plugins/tech-insights/package.json | 2 +- plugins/tech-radar/CHANGELOG.md | 11 + plugins/tech-radar/package.json | 2 +- .../techdocs-addons-test-utils/CHANGELOG.md | 16 + .../techdocs-addons-test-utils/package.json | 2 +- plugins/techdocs-backend/CHANGELOG.md | 18 + plugins/techdocs-backend/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- plugins/techdocs-node/CHANGELOG.md | 14 + plugins/techdocs-node/package.json | 2 +- plugins/techdocs-react/CHANGELOG.md | 11 + plugins/techdocs-react/package.json | 2 +- plugins/techdocs/CHANGELOG.md | 19 + plugins/techdocs/package.json | 2 +- plugins/todo-backend/CHANGELOG.md | 15 + plugins/todo-backend/package.json | 2 +- plugins/todo/CHANGELOG.md | 12 + plugins/todo/package.json | 2 +- plugins/user-settings-backend/CHANGELOG.md | 12 + plugins/user-settings-backend/package.json | 2 +- plugins/user-settings/CHANGELOG.md | 14 + plugins/user-settings/package.json | 2 +- plugins/vault-backend/CHANGELOG.md | 10 + plugins/vault-backend/package.json | 2 +- plugins/vault/CHANGELOG.md | 12 + plugins/vault/package.json | 2 +- plugins/xcmetrics/CHANGELOG.md | 10 + plugins/xcmetrics/package.json | 2 +- yarn.lock | 276 +- 491 files changed, 5840 insertions(+), 1422 deletions(-) delete mode 100644 .changeset/afraid-shirts-train.md delete mode 100644 .changeset/angry-ducks-shake.md delete mode 100644 .changeset/backend-like-a-tattoo.md delete mode 100644 .changeset/beige-tigers-matter.md delete mode 100644 .changeset/big-days-press.md delete mode 100644 .changeset/blue-eyes-run.md delete mode 100644 .changeset/brown-eyes-yell.md delete mode 100644 .changeset/brown-keys-raise.md delete mode 100644 .changeset/brown-meals-trade.md delete mode 100644 .changeset/calm-buttons-type.md delete mode 100644 .changeset/calm-snails-trade.md delete mode 100644 .changeset/calm-wolves-taste.md delete mode 100644 .changeset/chilled-goats-jump.md delete mode 100644 .changeset/chilled-pants-wonder.md delete mode 100644 .changeset/chilled-queens-wonder.md delete mode 100644 .changeset/chilly-fireants-type.md delete mode 100644 .changeset/chilly-taxis-shop.md delete mode 100644 .changeset/clean-lobsters-brake.md delete mode 100644 .changeset/clever-coins-deny.md delete mode 100644 .changeset/cold-drinks-exercise.md delete mode 100644 .changeset/cold-laws-turn.md delete mode 100644 .changeset/cool-dingos-repair.md delete mode 100644 .changeset/create-app-1682437922.md delete mode 100644 .changeset/curly-rats-fold.md delete mode 100644 .changeset/curvy-months-appear.md delete mode 100644 .changeset/dry-boats-sniff.md delete mode 100644 .changeset/dull-wombats-stare.md delete mode 100644 .changeset/eighty-olives-live.md delete mode 100644 .changeset/eleven-taxis-notice.md delete mode 100644 .changeset/extragavent-fast-fly.md delete mode 100644 .changeset/fair-suits-warn.md delete mode 100644 .changeset/fast-wasps-peel.md delete mode 100644 .changeset/fifty-grapes-explode.md delete mode 100644 .changeset/fifty-laws-count.md delete mode 100644 .changeset/five-lies-confess.md delete mode 100644 .changeset/five-tigers-whisper.md delete mode 100644 .changeset/fluffy-crabs-reply.md delete mode 100644 .changeset/fluffy-mirrors-happen.md delete mode 100644 .changeset/fresh-moons-unite.md delete mode 100644 .changeset/friendly-frogs-drop.md delete mode 100644 .changeset/funny-cups-count.md delete mode 100644 .changeset/funny-trains-sniff.md delete mode 100644 .changeset/giant-students-lie.md delete mode 100644 .changeset/gold-vans-sin.md delete mode 100644 .changeset/good-lions-approve.md delete mode 100644 .changeset/green-cheetahs-cover.md delete mode 100644 .changeset/healthy-ladybugs-chew.md delete mode 100644 .changeset/heavy-penguins-burn.md delete mode 100644 .changeset/honest-comics-ring.md delete mode 100644 .changeset/honest-countries-deny.md delete mode 100644 .changeset/honest-turkeys-learn.md delete mode 100644 .changeset/hungry-countries-enjoy.md delete mode 100644 .changeset/hungry-foxes-divide.md delete mode 100644 .changeset/hungry-peas-sing.md delete mode 100644 .changeset/itchy-impalas-fold.md delete mode 100644 .changeset/khaki-brooms-kiss.md delete mode 100644 .changeset/late-lizards-unite.md delete mode 100644 .changeset/lazy-keys-work.md delete mode 100644 .changeset/mighty-bears-glow.md delete mode 100644 .changeset/mighty-cows-greet.md delete mode 100644 .changeset/modern-pumpkins-join.md delete mode 100644 .changeset/moody-lizards-beam.md delete mode 100644 .changeset/moody-shrimps-train.md delete mode 100644 .changeset/new-roses-fail.md delete mode 100644 .changeset/nice-ants-type.md delete mode 100644 .changeset/nine-planes-carry.md delete mode 100644 .changeset/nine-ties-smoke.md delete mode 100644 .changeset/ninety-eggs-lie.md delete mode 100644 .changeset/ninety-mugs-sin.md delete mode 100644 .changeset/olive-turkeys-switch.md delete mode 100644 .changeset/polite-dingos-train.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/pretty-gifts-greet.md delete mode 100644 .changeset/proud-chairs-sleep.md delete mode 100644 .changeset/quick-flies-guess.md delete mode 100644 .changeset/quiet-bikes-smash.md delete mode 100644 .changeset/quiet-stingrays-fly.md delete mode 100644 .changeset/rare-elephants-arrive.md delete mode 100644 .changeset/real-baboons-vanish.md delete mode 100644 .changeset/red-cheetahs-invite.md delete mode 100644 .changeset/red-parrots-attack.md delete mode 100644 .changeset/rotten-chefs-jog.md delete mode 100644 .changeset/serious-hornets-remember.md delete mode 100644 .changeset/serious-phones-flash.md delete mode 100644 .changeset/shy-worms-enjoy.md delete mode 100644 .changeset/six-mails-shout.md delete mode 100644 .changeset/sixty-falcons-protect.md delete mode 100644 .changeset/slimy-turkeys-return.md delete mode 100644 .changeset/soft-readers-exist.md delete mode 100644 .changeset/spicy-spies-warn.md delete mode 100644 .changeset/spotty-walls-serve.md delete mode 100644 .changeset/stupid-seas-stare.md delete mode 100644 .changeset/swift-fishes-run.md delete mode 100644 .changeset/swift-students-type.md delete mode 100644 .changeset/thick-parents-pump.md delete mode 100644 .changeset/thick-pugs-rush.md delete mode 100644 .changeset/thin-ways-exist.md delete mode 100644 .changeset/thirty-jobs-sort.md delete mode 100644 .changeset/three-tools-pump.md delete mode 100644 .changeset/tiny-crews-pull.md delete mode 100644 .changeset/tough-moles-whisper.md delete mode 100644 .changeset/twelve-birds-boil.md delete mode 100644 .changeset/twelve-zebras-repair.md delete mode 100644 .changeset/two-gorillas-drop.md delete mode 100644 .changeset/unlucky-deers-teach.md delete mode 100644 .changeset/unlucky-plants-give.md delete mode 100644 .changeset/warm-lamps-tease.md delete mode 100644 .changeset/wet-dolphins-love.md create mode 100644 docs/releases/v1.14.0-changelog.md diff --git a/.changeset/afraid-shirts-train.md b/.changeset/afraid-shirts-train.md deleted file mode 100644 index bd83716dc4..0000000000 --- a/.changeset/afraid-shirts-train.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@backstage/plugin-tech-insights': patch ---- - -Added the possibility to customize the check description in the scorecard component. - -- The `CheckResultRenderer` type now exposes an optional `description` method that allows to overwrite the description with a different string or a React component for a provided check result. - -Until now only the `BooleanCheck` element could be overridden, but from now on it's also possible to override the description for a check. -As an example, the description could change depending on the check result. Refer to the [README](https://github.com/backstage/backstage/blob/master/plugins/tech-insights/README.md#adding-custom-rendering-components) file for more details diff --git a/.changeset/angry-ducks-shake.md b/.changeset/angry-ducks-shake.md deleted file mode 100644 index 58975123b4..0000000000 --- a/.changeset/angry-ducks-shake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-test-utils': patch ---- - -Allow specifying custom Docker registry for database tests diff --git a/.changeset/backend-like-a-tattoo.md b/.changeset/backend-like-a-tattoo.md deleted file mode 100644 index 0d2edfa7a9..0000000000 --- a/.changeset/backend-like-a-tattoo.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-test-utils': patch ---- - -Added `POSTGRES_11` and `POSTGRES_12` as supported test database IDs. diff --git a/.changeset/beige-tigers-matter.md b/.changeset/beige-tigers-matter.md deleted file mode 100644 index 248ce1fbf9..0000000000 --- a/.changeset/beige-tigers-matter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder': patch ---- - -Fix case GitLab workspace is a nested subgroup diff --git a/.changeset/big-days-press.md b/.changeset/big-days-press.md deleted file mode 100644 index 7dec7d6288..0000000000 --- a/.changeset/big-days-press.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -Expose both types of scaffolder permissions and rules through the metadata endpoint. - -The metadata endpoint now correctly exposes both types of scaffolder permissions and rules (for both the template and action resource types) through the metadata endpoint. diff --git a/.changeset/blue-eyes-run.md b/.changeset/blue-eyes-run.md deleted file mode 100644 index 1b96e01f1c..0000000000 --- a/.changeset/blue-eyes-run.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-devtools': minor -'@backstage/plugin-devtools-backend': minor -'@backstage/plugin-devtools-common': minor ---- - -Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details! diff --git a/.changeset/brown-eyes-yell.md b/.changeset/brown-eyes-yell.md deleted file mode 100644 index 5ed4140bba..0000000000 --- a/.changeset/brown-eyes-yell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-github-pull-requests-board': patch ---- - -The `EntityTeamPullRequestsContent` and `EntityTeamPullRequestsCard` support the ability to view the labels/tags added to each PR diff --git a/.changeset/brown-keys-raise.md b/.changeset/brown-keys-raise.md deleted file mode 100644 index 1d288d9f57..0000000000 --- a/.changeset/brown-keys-raise.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-kubernetes': patch ---- - -The Kubernetes plugin now requests AKS access tokens from Azure when retrieving -objects from clusters configured with `authProvider: aks` and sets `auth.aks` in -its request bodies appropriately. diff --git a/.changeset/brown-meals-trade.md b/.changeset/brown-meals-trade.md deleted file mode 100644 index f6849fa19b..0000000000 --- a/.changeset/brown-meals-trade.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/repo-tools': minor ---- - -**BREAKING**: The OpenAPI commands are now found within the `schema openapi` sub-command. For example `yarn backstage-repo-tools schema:openapi:verify` is now `yarn backstage-repo-tools schema openapi verify`. diff --git a/.changeset/calm-buttons-type.md b/.changeset/calm-buttons-type.md deleted file mode 100644 index 11b300a684..0000000000 --- a/.changeset/calm-buttons-type.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Bump minimum required version of `vm2` to be 3.9.18 diff --git a/.changeset/calm-snails-trade.md b/.changeset/calm-snails-trade.md deleted file mode 100644 index 0738b5aa37..0000000000 --- a/.changeset/calm-snails-trade.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-bazaar': patch ---- - -Fixed `validateDOMNesting` warnings diff --git a/.changeset/calm-wolves-taste.md b/.changeset/calm-wolves-taste.md deleted file mode 100644 index ec0a7fb4f0..0000000000 --- a/.changeset/calm-wolves-taste.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search': patch ---- - -Fixed 404 Error when fetching search results due to URL encoding changes diff --git a/.changeset/chilled-goats-jump.md b/.changeset/chilled-goats-jump.md deleted file mode 100644 index 3dd152712a..0000000000 --- a/.changeset/chilled-goats-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Correct command to create new plugins diff --git a/.changeset/chilled-pants-wonder.md b/.changeset/chilled-pants-wonder.md deleted file mode 100644 index 501ced7cba..0000000000 --- a/.changeset/chilled-pants-wonder.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-openapi-utils': patch ---- - -Use permalinks for links including a line number reference diff --git a/.changeset/chilled-queens-wonder.md b/.changeset/chilled-queens-wonder.md deleted file mode 100644 index a10212792d..0000000000 --- a/.changeset/chilled-queens-wonder.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Ensure that entity cache state is only written to the database when actually changed diff --git a/.changeset/chilly-fireants-type.md b/.changeset/chilly-fireants-type.md deleted file mode 100644 index 6bff750d57..0000000000 --- a/.changeset/chilly-fireants-type.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Remove the direct dependency on deprecated "request" library diff --git a/.changeset/chilly-taxis-shop.md b/.changeset/chilly-taxis-shop.md deleted file mode 100644 index 9e2e73a5e3..0000000000 --- a/.changeset/chilly-taxis-shop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-home': patch ---- - -Remove object-hash dependency diff --git a/.changeset/clean-lobsters-brake.md b/.changeset/clean-lobsters-brake.md deleted file mode 100644 index f6da6e986e..0000000000 --- a/.changeset/clean-lobsters-brake.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': minor ---- - -Allow fetching pod metrics limited by a `labelSelector`. - -This is used by the Kubernetes tab on a components' page and leads to much smaller responses being received from Kubernetes, especially with larger Kubernetes clusters. diff --git a/.changeset/clever-coins-deny.md b/.changeset/clever-coins-deny.md deleted file mode 100644 index 0c1e2ade26..0000000000 --- a/.changeset/clever-coins-deny.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-home': patch ---- - -Use the semantic time tag for rendering world clocks on homepage headers. diff --git a/.changeset/cold-drinks-exercise.md b/.changeset/cold-drinks-exercise.md deleted file mode 100644 index e47e133929..0000000000 --- a/.changeset/cold-drinks-exercise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-explore': patch ---- - -Make sure that the first support button row does not break across lines diff --git a/.changeset/cold-laws-turn.md b/.changeset/cold-laws-turn.md deleted file mode 100644 index 6220f088db..0000000000 --- a/.changeset/cold-laws-turn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-events-backend-module-aws-sqs': minor ---- - -Allow endpoint configuration for sqs, enabling use of localstack for testing. diff --git a/.changeset/cool-dingos-repair.md b/.changeset/cool-dingos-repair.md deleted file mode 100644 index fe8377f5f1..0000000000 --- a/.changeset/cool-dingos-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/theme': minor ---- - -Updates light theme's primary foreground and `running` status indicator colours to meet WCAG. Previously #2E77D0 changed to #1F5493. diff --git a/.changeset/create-app-1682437922.md b/.changeset/create-app-1682437922.md deleted file mode 100644 index b50d431d4b..0000000000 --- a/.changeset/create-app-1682437922.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/create-app': patch ---- - -Bumped create-app version. diff --git a/.changeset/curly-rats-fold.md b/.changeset/curly-rats-fold.md deleted file mode 100644 index c4cd8d514b..0000000000 --- a/.changeset/curly-rats-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Internal refactoring for performance in the service handlers diff --git a/.changeset/curvy-months-appear.md b/.changeset/curvy-months-appear.md deleted file mode 100644 index 487e60c437..0000000000 --- a/.changeset/curvy-months-appear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs': patch ---- - -Re-add the possibility to have trailing slashes in Techdocs navigation. diff --git a/.changeset/dry-boats-sniff.md b/.changeset/dry-boats-sniff.md deleted file mode 100644 index 0c359b5536..0000000000 --- a/.changeset/dry-boats-sniff.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@backstage/app-defaults': patch ---- - -Added a System Icon for resource entities. -This can be obtained using: - -```ts -useApp().getSystemIcon('kind:resource'); -``` diff --git a/.changeset/dull-wombats-stare.md b/.changeset/dull-wombats-stare.md deleted file mode 100644 index 36ba412c02..0000000000 --- a/.changeset/dull-wombats-stare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-openapi-utils': patch ---- - -Adjusted README accordingly after the generated output now has a `.generated.ts` extension diff --git a/.changeset/eighty-olives-live.md b/.changeset/eighty-olives-live.md deleted file mode 100644 index 16898701f4..0000000000 --- a/.changeset/eighty-olives-live.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Updated the `DatabaseManager` to include the plugin id in the Postgres application name of the database connections created for each plugin. diff --git a/.changeset/eleven-taxis-notice.md b/.changeset/eleven-taxis-notice.md deleted file mode 100644 index 88a25991fa..0000000000 --- a/.changeset/eleven-taxis-notice.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch -'@backstage/config-loader': patch -'@backstage/plugin-auth-backend': patch ---- - -Fixed the way that some request errors are thrown diff --git a/.changeset/extragavent-fast-fly.md b/.changeset/extragavent-fast-fly.md deleted file mode 100644 index 697b5163ec..0000000000 --- a/.changeset/extragavent-fast-fly.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@backstage/plugin-badges': patch -'@backstage/plugin-badges-backend': minor ---- - -Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges. - -Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version. - -**BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options. diff --git a/.changeset/fair-suits-warn.md b/.changeset/fair-suits-warn.md deleted file mode 100644 index 3edc2aa1ca..0000000000 --- a/.changeset/fair-suits-warn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-tech-radar': patch ---- - -Fix description links when clicking entry in radar. diff --git a/.changeset/fast-wasps-peel.md b/.changeset/fast-wasps-peel.md deleted file mode 100644 index 075336a506..0000000000 --- a/.changeset/fast-wasps-peel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Enable strict config checking during `backstage-cli config:check` with the new `--strict` option which will surface schema errors. diff --git a/.changeset/fifty-grapes-explode.md b/.changeset/fifty-grapes-explode.md deleted file mode 100644 index 999a105c4f..0000000000 --- a/.changeset/fifty-grapes-explode.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Fixed a bug in the `queryEntities` endpoint that was causing filtered entities to be included in cursor requests. diff --git a/.changeset/fifty-laws-count.md b/.changeset/fifty-laws-count.md deleted file mode 100644 index f20e41fc20..0000000000 --- a/.changeset/fifty-laws-count.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes': patch ---- - -Omit managed fields in the Kubernetes resource YAML display. diff --git a/.changeset/five-lies-confess.md b/.changeset/five-lies-confess.md deleted file mode 100644 index eefd2bd6fa..0000000000 --- a/.changeset/five-lies-confess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Improve the query for orphan pruning diff --git a/.changeset/five-tigers-whisper.md b/.changeset/five-tigers-whisper.md deleted file mode 100644 index aa9758c3b5..0000000000 --- a/.changeset/five-tigers-whisper.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-stack-overflow': patch ---- - -StackOverflowSearchResultListItem can now accept an empty result prop so that it can be rendered in the suggested SearchResultListItem pattern. diff --git a/.changeset/fluffy-crabs-reply.md b/.changeset/fluffy-crabs-reply.md deleted file mode 100644 index 0665dd864d..0000000000 --- a/.changeset/fluffy-crabs-reply.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend-module-elasticsearch': minor ---- - -Upgrade to aws-sdk v3 and include OpenSearch Serverless support diff --git a/.changeset/fluffy-mirrors-happen.md b/.changeset/fluffy-mirrors-happen.md deleted file mode 100644 index 6dce398217..0000000000 --- a/.changeset/fluffy-mirrors-happen.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Kubernetes clusters now support `authProvider: aks`. When configured this way, -the `retrieveObjectsByServiceId` action will use the `auth.aks` value in the -request body as a bearer token to authenticate with Kubernetes. diff --git a/.changeset/fresh-moons-unite.md b/.changeset/fresh-moons-unite.md deleted file mode 100644 index 3d3af7e698..0000000000 --- a/.changeset/fresh-moons-unite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Adjusted the OpenAPI schema file name according to the new structure diff --git a/.changeset/friendly-frogs-drop.md b/.changeset/friendly-frogs-drop.md deleted file mode 100644 index 682f1dbabb..0000000000 --- a/.changeset/friendly-frogs-drop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Change orphan cleanup task to only log a message if it deleted entities. diff --git a/.changeset/funny-cups-count.md b/.changeset/funny-cups-count.md deleted file mode 100644 index 19dbc3b8bf..0000000000 --- a/.changeset/funny-cups-count.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-gcalendar': patch ---- - -Pass user info email scope on auth refresh to resolve invalid credentials error diff --git a/.changeset/funny-trains-sniff.md b/.changeset/funny-trains-sniff.md deleted file mode 100644 index 91dbd28c28..0000000000 --- a/.changeset/funny-trains-sniff.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -'@backstage/plugin-catalog-react': minor -'@backstage/plugin-catalog': minor ---- - -Added an entity namespace filter and column on the default catalog page. - -If you have a custom version of the catalog page, you can add this filter in your CatalogPage code: - -```ts - - - - - - /* if you want namespace picker */ - - - - - - -``` - -The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable. diff --git a/.changeset/giant-students-lie.md b/.changeset/giant-students-lie.md deleted file mode 100644 index fdcb406296..0000000000 --- a/.changeset/giant-students-lie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': minor ---- - -Add ability to use `defaultNamespace` and `defaultKind` for scaffolder action `catalog:fetch` diff --git a/.changeset/gold-vans-sin.md b/.changeset/gold-vans-sin.md deleted file mode 100644 index d99cb9834d..0000000000 --- a/.changeset/gold-vans-sin.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-gitlab': patch ---- - -Fix input schema validation issue for gitlab actions: - -- gitlab:group:ensureExists -- gitlab:projectAccessToken:create -- gitlab:projectDeployToken:create -- gitlab:projectVariable:create diff --git a/.changeset/good-lions-approve.md b/.changeset/good-lions-approve.md deleted file mode 100644 index f4065a6ab3..0000000000 --- a/.changeset/good-lions-approve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/integration': patch ---- - -Fixed a bug where the wrong credentials would be selected when using multiple GitHub app integrations. diff --git a/.changeset/green-cheetahs-cover.md b/.changeset/green-cheetahs-cover.md deleted file mode 100644 index 2633a5af01..0000000000 --- a/.changeset/green-cheetahs-cover.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-app-api': minor ---- - -The analytics' `navigate` event will now include the route parameters as attributes of the navigate event diff --git a/.changeset/healthy-ladybugs-chew.md b/.changeset/healthy-ladybugs-chew.md deleted file mode 100644 index 83f53d5c2c..0000000000 --- a/.changeset/healthy-ladybugs-chew.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/repo-tools': minor ---- - -Generated OpenAPI files now have a `.generated.ts` file name and a warning header at the top, to highlight that they should not be edited by hand. diff --git a/.changeset/heavy-penguins-burn.md b/.changeset/heavy-penguins-burn.md deleted file mode 100644 index b8c243a99b..0000000000 --- a/.changeset/heavy-penguins-burn.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-common': minor -'@backstage/plugin-scaffolder-react': minor ---- - -Add support for Markdown text blob outputs from templates diff --git a/.changeset/honest-comics-ring.md b/.changeset/honest-comics-ring.md deleted file mode 100644 index 38a962c5d3..0000000000 --- a/.changeset/honest-comics-ring.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-todo-backend': patch ---- - -Added OpenAPI schema diff --git a/.changeset/honest-countries-deny.md b/.changeset/honest-countries-deny.md deleted file mode 100644 index 14c9094592..0000000000 --- a/.changeset/honest-countries-deny.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-jenkins-backend': patch ---- - -Fix handling of slashes in branch names diff --git a/.changeset/honest-turkeys-learn.md b/.changeset/honest-turkeys-learn.md deleted file mode 100644 index e4e6aae5fc..0000000000 --- a/.changeset/honest-turkeys-learn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Remove unnecessary join in the entity facets endpoint, exclude nulls diff --git a/.changeset/hungry-countries-enjoy.md b/.changeset/hungry-countries-enjoy.md deleted file mode 100644 index c14ec702b9..0000000000 --- a/.changeset/hungry-countries-enjoy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-app-api': patch ---- - -Fixed a bug in the Azure auth provider which prevented getting access tokens with multiple scopes for one resource diff --git a/.changeset/hungry-foxes-divide.md b/.changeset/hungry-foxes-divide.md deleted file mode 100644 index 589c899443..0000000000 --- a/.changeset/hungry-foxes-divide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-graph': patch ---- - -Expose all `EntityRelationsGraphProps` to Catalog Graph Page diff --git a/.changeset/hungry-peas-sing.md b/.changeset/hungry-peas-sing.md deleted file mode 100644 index 8c39d33ddd..0000000000 --- a/.changeset/hungry-peas-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-openapi': patch ---- - -Fixed bug in `jsonSchemaRefPlaceholderResolver` where relative $ref files were resolved through file system instead of base URL of file diff --git a/.changeset/itchy-impalas-fold.md b/.changeset/itchy-impalas-fold.md deleted file mode 100644 index 31840124ad..0000000000 --- a/.changeset/itchy-impalas-fold.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@backstage/plugin-events-backend-module-aws-sqs': patch -'@backstage/integration-aws-node': patch -'@backstage/plugin-kubernetes-backend': patch -'@backstage/backend-common': patch -'@backstage/plugin-techdocs-node': patch ---- - -Standardize `@aws-sdk` v3 versions diff --git a/.changeset/khaki-brooms-kiss.md b/.changeset/khaki-brooms-kiss.md deleted file mode 100644 index 76d4ff2cd2..0000000000 --- a/.changeset/khaki-brooms-kiss.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-explore': patch ---- - -Display the title of the entity on the explore card if present, otherwise stick to the name diff --git a/.changeset/late-lizards-unite.md b/.changeset/late-lizards-unite.md deleted file mode 100644 index bf0a03de12..0000000000 --- a/.changeset/late-lizards-unite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/config-loader': patch ---- - -Added a new `noUndeclaredProperties` option to `SchemaLoader` to support enforcing that there are no extra keys when verifying config. diff --git a/.changeset/lazy-keys-work.md b/.changeset/lazy-keys-work.md deleted file mode 100644 index 8a01662929..0000000000 --- a/.changeset/lazy-keys-work.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-circleci': patch ---- - -Fixes row display for in progress jobs to not display trailing "took" diff --git a/.changeset/mighty-bears-glow.md b/.changeset/mighty-bears-glow.md deleted file mode 100644 index e540cdd8ae..0000000000 --- a/.changeset/mighty-bears-glow.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@backstage/plugin-search-react': minor -'@backstage/plugin-search': minor ---- - -Add close button & improve search input. - -MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly. - -SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given. diff --git a/.changeset/mighty-cows-greet.md b/.changeset/mighty-cows-greet.md deleted file mode 100644 index 2e871db0c6..0000000000 --- a/.changeset/mighty-cows-greet.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-analytics-module-ga4': minor ---- - -Plugin provides Backstage Analytics API for Google Analytics 4. Once installed and configured, analytics events will be sent to GA4 as your users navigate and use your Backstage instance diff --git a/.changeset/modern-pumpkins-join.md b/.changeset/modern-pumpkins-join.md deleted file mode 100644 index dc0e4a6575..0000000000 --- a/.changeset/modern-pumpkins-join.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-app-api': patch ---- - -Switch `configServiceFactory` to use `ConfigSources` from `@backstage/config-loader` to load config. diff --git a/.changeset/moody-lizards-beam.md b/.changeset/moody-lizards-beam.md deleted file mode 100644 index 68fb9a9e40..0000000000 --- a/.changeset/moody-lizards-beam.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -'@backstage/config-loader': minor ---- - -Introduced a new config source system to replace `loadConfig`. There is a new `ConfigSource` interface along with utilities provided by `ConfigSources`, as well as a number of built-in configuration source implementations. The new system is more flexible and makes it easier to create new and reusable sources of configuration, such as loading configuration from secret providers. - -The following is an example of how to load configuration using the default behavior: - -```ts -const source = ConfigSources.default({ - argv: options?.argv, - remote: options?.remote, -}); -const config = await ConfigSources.toConfig(source); -``` - -The `ConfigSource` interface looks like this: - -```ts -export interface ConfigSource { - readConfigData(options?: ReadConfigDataOptions): AsyncConfigSourceIterator; -} -``` - -It is best implemented using an async iterator: - -```ts -class MyConfigSource implements ConfigSource { - async *readConfigData() { - yield { - config: [ - { - context: 'example', - data: { backend: { baseUrl: 'http://localhost' } }, - }, - ], - }; - } -} -``` diff --git a/.changeset/moody-shrimps-train.md b/.changeset/moody-shrimps-train.md deleted file mode 100644 index 397500e2cb..0000000000 --- a/.changeset/moody-shrimps-train.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend-module-gitlab': minor ---- - -Add a new scaffolder action for gitlab to ensure a group exists diff --git a/.changeset/new-roses-fail.md b/.changeset/new-roses-fail.md deleted file mode 100644 index 77495c5f54..0000000000 --- a/.changeset/new-roses-fail.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@backstage/plugin-org': patch ---- - -Changed the MembersListCard component to allow displaying aggregated members when viewing a group. Now, a toggle switch can be displayed that lets you switch between showing direct members and aggregated members. - -To enable this new feature, set the showAggregateMembersToggle prop on EntityMembersListCard: - -```jsx -// In packages/app/src/components/catalog/EntityPage.tsx -const groupPage = ( - // ... - - // ... -); -``` diff --git a/.changeset/nice-ants-type.md b/.changeset/nice-ants-type.md deleted file mode 100644 index 632d323213..0000000000 --- a/.changeset/nice-ants-type.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-aws': minor ---- - -**BREAKING**: AwsOrganizationCloudAccountProcessor.fromConfig now returns a promise instead of the instance directly. diff --git a/.changeset/nine-planes-carry.md b/.changeset/nine-planes-carry.md deleted file mode 100644 index 414cc25680..0000000000 --- a/.changeset/nine-planes-carry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-sites-backend': patch ---- - -Updated URL to `/health` and corrected typos in the `README.md` diff --git a/.changeset/nine-ties-smoke.md b/.changeset/nine-ties-smoke.md deleted file mode 100644 index f7ae8016be..0000000000 --- a/.changeset/nine-ties-smoke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-home': patch ---- - -Bump to using the later v5 versions of `@rjsf/*` diff --git a/.changeset/ninety-eggs-lie.md b/.changeset/ninety-eggs-lie.md deleted file mode 100644 index 83b04b82af..0000000000 --- a/.changeset/ninety-eggs-lie.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/core-components': patch -'@backstage/theme': patch ---- - -Fix accessibility issue with Backstage Table's header style diff --git a/.changeset/ninety-mugs-sin.md b/.changeset/ninety-mugs-sin.md deleted file mode 100644 index 6b71a00667..0000000000 --- a/.changeset/ninety-mugs-sin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-react': minor ---- - - accepts InputProp property that can override keys from default diff --git a/.changeset/olive-turkeys-switch.md b/.changeset/olive-turkeys-switch.md deleted file mode 100644 index d208f3b197..0000000000 --- a/.changeset/olive-turkeys-switch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': patch ---- - -Fixed bug in queryWithPaging that caused secondary rate limit errors in GitHub with organizations having more than 1000 repositories. This change makes one request per second to avoid concurrency issues. diff --git a/.changeset/polite-dingos-train.md b/.changeset/polite-dingos-train.md deleted file mode 100644 index 49ac56a000..0000000000 --- a/.changeset/polite-dingos-train.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -'@backstage/plugin-kubernetes': minor ---- - -Added Pod logs components for Kubernetes plugin - -**BREAKING**: `kubernetesProxyApi` for custom plugins built with components from the Kubernetes plugin apis, `kubernetesProxyApi` should be added to the plugin's API list. - -``` -... -export const kubernetesPlugin = createPlugin({ - id: 'kubernetes', - apis: [ -... - createApiFactory({ - api: kubernetesProxyApiRef, - deps: { - kubernetesApi: kubernetesApiRef, - }, - factory: ({ kubernetesApi }) => - new KubernetesProxyClient({ - kubernetesApi, - }), - }), -``` - -**BREAKING**: `KubernetesDrawer` is now called `KubernetesStructuredMetadataTableDrawer` so that we can do more than just show `StructuredMetadataTable` - -`import { KubernetesDrawer } from "@backstage/plugin-kubernetes"` - -should now be: - -`import { KubernetesStructuredMetadataTableDrawer } from "@backstage/plugin-kubernetes"` diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index bec2a1e2df..0000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,308 +0,0 @@ -{ - "mode": "exit", - "tag": "next", - "initialVersions": { - "example-app": "0.2.82", - "@backstage/app-defaults": "1.3.0", - "example-backend": "0.2.82", - "@backstage/backend-app-api": "0.4.2", - "@backstage/backend-common": "0.18.4", - "@backstage/backend-defaults": "0.1.9", - "@backstage/backend-dev-utils": "0.1.1", - "example-backend-next": "0.0.10", - "@backstage/backend-openapi-utils": "0.0.1", - "@backstage/backend-plugin-api": "0.5.1", - "@backstage/backend-tasks": "0.5.1", - "@backstage/backend-test-utils": "0.1.36", - "@backstage/catalog-client": "1.4.1", - "@backstage/catalog-model": "1.3.0", - "@backstage/cli": "0.22.6", - "@backstage/cli-common": "0.1.12", - "@backstage/cli-node": "0.1.0", - "@backstage/codemods": "0.1.44", - "@backstage/config": "1.0.7", - "@backstage/config-loader": "1.2.0", - "@backstage/core-app-api": "1.7.0", - "@backstage/core-components": "0.13.0", - "@backstage/core-plugin-api": "1.5.1", - "@backstage/create-app": "0.5.0", - "@backstage/dev-utils": "1.0.14", - "e2e-test": "0.2.2", - "@backstage/errors": "1.1.5", - "@backstage/eslint-plugin": "0.1.3", - "@backstage/integration": "1.4.4", - "@backstage/integration-aws-node": "0.1.2", - "@backstage/integration-react": "1.1.12", - "@backstage/release-manifests": "0.0.9", - "@backstage/repo-tools": "0.2.0", - "@techdocs/cli": "1.4.1", - "techdocs-cli-embedded-app": "0.2.81", - "@backstage/test-utils": "1.3.0", - "@backstage/theme": "0.2.19", - "@backstage/types": "1.0.2", - "@backstage/version-bridge": "1.0.4", - "@backstage/plugin-adr": "0.5.0", - "@backstage/plugin-adr-backend": "0.3.2", - "@backstage/plugin-adr-common": "0.2.8", - "@backstage/plugin-airbrake": "0.3.17", - "@backstage/plugin-airbrake-backend": "0.2.17", - "@backstage/plugin-allure": "0.1.33", - "@backstage/plugin-analytics-module-ga": "0.1.28", - "@backstage/plugin-apache-airflow": "0.2.10", - "@backstage/plugin-api-docs": "0.9.2", - "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.2", - "@backstage/plugin-apollo-explorer": "0.1.10", - "@backstage/plugin-app-backend": "0.3.44", - "@backstage/plugin-auth-backend": "0.18.2", - "@backstage/plugin-auth-node": "0.2.13", - "@backstage/plugin-azure-devops": "0.2.8", - "@backstage/plugin-azure-devops-backend": "0.3.23", - "@backstage/plugin-azure-devops-common": "0.3.0", - "@backstage/plugin-azure-sites": "0.1.6", - "@backstage/plugin-azure-sites-backend": "0.1.6", - "@backstage/plugin-azure-sites-common": "0.1.0", - "@backstage/plugin-badges": "0.2.41", - "@backstage/plugin-badges-backend": "0.1.38", - "@backstage/plugin-bazaar": "0.2.7", - "@backstage/plugin-bazaar-backend": "0.2.7", - "@backstage/plugin-bitbucket-cloud-common": "0.2.5", - "@backstage/plugin-bitrise": "0.1.44", - "@backstage/plugin-catalog": "1.10.0", - "@backstage/plugin-catalog-backend": "1.9.0", - "@backstage/plugin-catalog-backend-module-aws": "0.1.18", - "@backstage/plugin-catalog-backend-module-azure": "0.1.15", - "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.11", - "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.11", - "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.9", - "@backstage/plugin-catalog-backend-module-gerrit": "0.1.12", - "@backstage/plugin-catalog-backend-module-github": "0.2.7", - "@backstage/plugin-catalog-backend-module-gitlab": "0.2.0", - "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.3.1", - "@backstage/plugin-catalog-backend-module-ldap": "0.5.11", - "@backstage/plugin-catalog-backend-module-msgraph": "0.5.3", - "@backstage/plugin-catalog-backend-module-openapi": "0.1.10", - "@backstage/plugin-catalog-backend-module-puppetdb": "0.1.1", - "@backstage/plugin-catalog-common": "1.0.13", - "@internal/plugin-catalog-customized": "0.0.9", - "@backstage/plugin-catalog-graph": "0.2.29", - "@backstage/plugin-catalog-graphql": "0.3.20", - "@backstage/plugin-catalog-import": "0.9.7", - "@backstage/plugin-catalog-node": "1.3.5", - "@backstage/plugin-catalog-react": "1.5.0", - "@backstage/plugin-cicd-statistics": "0.1.19", - "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.13", - "@backstage/plugin-circleci": "0.3.17", - "@backstage/plugin-cloudbuild": "0.3.17", - "@backstage/plugin-code-climate": "0.1.17", - "@backstage/plugin-code-coverage": "0.2.10", - "@backstage/plugin-code-coverage-backend": "0.2.10", - "@backstage/plugin-codescene": "0.1.12", - "@backstage/plugin-config-schema": "0.1.40", - "@backstage/plugin-cost-insights": "0.12.6", - "@backstage/plugin-cost-insights-common": "0.1.1", - "@backstage/plugin-dynatrace": "4.0.0", - "@backstage/plugin-entity-feedback": "0.2.0", - "@backstage/plugin-entity-feedback-backend": "0.1.2", - "@backstage/plugin-entity-feedback-common": "0.1.1", - "@backstage/plugin-entity-validation": "0.1.2", - "@backstage/plugin-events-backend": "0.2.5", - "@backstage/plugin-events-backend-module-aws-sqs": "0.1.6", - "@backstage/plugin-events-backend-module-azure": "0.1.6", - "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.1.6", - "@backstage/plugin-events-backend-module-gerrit": "0.1.6", - "@backstage/plugin-events-backend-module-github": "0.1.6", - "@backstage/plugin-events-backend-module-gitlab": "0.1.6", - "@backstage/plugin-events-backend-test-utils": "0.1.6", - "@backstage/plugin-events-node": "0.2.5", - "@internal/plugin-todo-list": "1.0.12", - "@internal/plugin-todo-list-backend": "1.0.12", - "@internal/plugin-todo-list-common": "1.0.10", - "@backstage/plugin-explore": "0.4.2", - "@backstage/plugin-explore-backend": "0.0.6", - "@backstage/plugin-explore-common": "0.0.1", - "@backstage/plugin-explore-react": "0.0.28", - "@backstage/plugin-firehydrant": "0.2.1", - "@backstage/plugin-fossa": "0.2.49", - "@backstage/plugin-gcalendar": "0.3.13", - "@backstage/plugin-gcp-projects": "0.3.36", - "@backstage/plugin-git-release-manager": "0.3.30", - "@backstage/plugin-github-actions": "0.5.17", - "@backstage/plugin-github-deployments": "0.1.48", - "@backstage/plugin-github-issues": "0.2.6", - "@backstage/plugin-github-pull-requests-board": "0.1.11", - "@backstage/plugin-gitops-profiles": "0.3.35", - "@backstage/plugin-gocd": "0.1.23", - "@backstage/plugin-graphiql": "0.2.49", - "@backstage/plugin-graphql-backend": "0.1.34", - "@backstage/plugin-graphql-voyager": "0.1.2", - "@backstage/plugin-home": "0.5.0", - "@backstage/plugin-ilert": "0.2.6", - "@backstage/plugin-jenkins": "0.7.16", - "@backstage/plugin-jenkins-backend": "0.1.34", - "@backstage/plugin-jenkins-common": "0.1.15", - "@backstage/plugin-kafka": "0.3.17", - "@backstage/plugin-kafka-backend": "0.2.37", - "@backstage/plugin-kubernetes": "0.8.0", - "@backstage/plugin-kubernetes-backend": "0.10.0", - "@backstage/plugin-kubernetes-common": "0.6.2", - "@backstage/plugin-lighthouse": "0.4.2", - "@backstage/plugin-lighthouse-backend": "0.2.0", - "@backstage/plugin-lighthouse-common": "0.1.1", - "@backstage/plugin-linguist": "0.1.2", - "@backstage/plugin-linguist-backend": "0.2.1", - "@backstage/plugin-linguist-common": "0.1.0", - "@backstage/plugin-microsoft-calendar": "0.1.2", - "@backstage/plugin-newrelic": "0.3.35", - "@backstage/plugin-newrelic-dashboard": "0.2.10", - "@backstage/plugin-octopus-deploy": "0.1.1", - "@backstage/plugin-org": "0.6.7", - "@backstage/plugin-org-react": "0.1.6", - "@backstage/plugin-pagerduty": "0.5.10", - "@backstage/plugin-periskop": "0.1.15", - "@backstage/plugin-periskop-backend": "0.1.15", - "@backstage/plugin-permission-backend": "0.5.19", - "@backstage/plugin-permission-common": "0.7.5", - "@backstage/plugin-permission-node": "0.7.7", - "@backstage/plugin-permission-react": "0.4.12", - "@backstage/plugin-playlist": "0.1.8", - "@backstage/plugin-playlist-backend": "0.3.0", - "@backstage/plugin-playlist-common": "0.1.6", - "@backstage/plugin-proxy-backend": "0.2.38", - "@backstage/plugin-puppetdb": "0.1.0", - "@backstage/plugin-rollbar": "0.4.17", - "@backstage/plugin-rollbar-backend": "0.1.41", - "@backstage/plugin-scaffolder": "1.13.0", - "@backstage/plugin-scaffolder-backend": "1.13.0", - "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.1.0", - "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.19", - "@backstage/plugin-scaffolder-backend-module-gitlab": "0.1.0", - "@backstage/plugin-scaffolder-backend-module-rails": "0.4.12", - "@backstage/plugin-scaffolder-backend-module-sentry": "0.1.4", - "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.17", - "@backstage/plugin-scaffolder-common": "1.2.7", - "@backstage/plugin-scaffolder-node": "0.1.2", - "@backstage/plugin-scaffolder-react": "1.3.0", - "@backstage/plugin-search": "1.2.0", - "@backstage/plugin-search-backend": "1.3.0", - "@backstage/plugin-search-backend-module-catalog": "0.1.0", - "@backstage/plugin-search-backend-module-elasticsearch": "1.2.0", - "@backstage/plugin-search-backend-module-explore": "0.1.0", - "@backstage/plugin-search-backend-module-pg": "0.5.5", - "@backstage/plugin-search-backend-module-techdocs": "0.1.0", - "@backstage/plugin-search-backend-node": "1.2.0", - "@backstage/plugin-search-common": "1.2.3", - "@backstage/plugin-search-react": "1.5.2", - "@backstage/plugin-sentry": "0.5.2", - "@backstage/plugin-shortcuts": "0.3.9", - "@backstage/plugin-sonarqube": "0.6.6", - "@backstage/plugin-sonarqube-backend": "0.1.9", - "@backstage/plugin-sonarqube-react": "0.1.5", - "@backstage/plugin-splunk-on-call": "0.4.6", - "@backstage/plugin-stack-overflow": "0.1.13", - "@backstage/plugin-stack-overflow-backend": "0.2.0", - "@backstage/plugin-stackstorm": "0.1.1", - "@backstage/plugin-tech-insights": "0.3.9", - "@backstage/plugin-tech-insights-backend": "0.5.10", - "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.28", - "@backstage/plugin-tech-insights-common": "0.2.10", - "@backstage/plugin-tech-insights-node": "0.4.2", - "@backstage/plugin-tech-radar": "0.6.3", - "@backstage/plugin-techdocs": "1.6.1", - "@backstage/plugin-techdocs-addons-test-utils": "1.0.12", - "@backstage/plugin-techdocs-backend": "1.6.1", - "@backstage/plugin-techdocs-module-addons-contrib": "1.0.12", - "@backstage/plugin-techdocs-node": "1.7.0", - "@backstage/plugin-techdocs-react": "1.1.5", - "@backstage/plugin-todo": "0.2.19", - "@backstage/plugin-todo-backend": "0.1.41", - "@backstage/plugin-user-settings": "0.7.2", - "@backstage/plugin-user-settings-backend": "0.1.8", - "@backstage/plugin-vault": "0.1.11", - "@backstage/plugin-vault-backend": "0.3.0", - "@backstage/plugin-xcmetrics": "0.2.37", - "@backstage/plugin-analytics-module-ga4": "0.0.0", - "@backstage/plugin-devtools": "0.0.0", - "@backstage/plugin-devtools-backend": "0.0.0", - "@backstage/plugin-devtools-common": "0.0.0" - }, - "changesets": [ - "afraid-shirts-train", - "backend-like-a-tattoo", - "beige-tigers-matter", - "blue-eyes-run", - "brown-eyes-yell", - "brown-keys-raise", - "calm-snails-trade", - "calm-wolves-taste", - "chilled-goats-jump", - "chilled-pants-wonder", - "chilled-queens-wonder", - "chilly-fireants-type", - "chilly-taxis-shop", - "clean-lobsters-brake", - "cold-drinks-exercise", - "cold-laws-turn", - "cool-dingos-repair", - "create-app-1682437922", - "curly-rats-fold", - "curvy-months-appear", - "dry-boats-sniff", - "dull-wombats-stare", - "eighty-olives-live", - "extragavent-fast-fly", - "fair-suits-warn", - "fifty-grapes-explode", - "fifty-laws-count", - "five-tigers-whisper", - "fluffy-crabs-reply", - "fluffy-mirrors-happen", - "fresh-moons-unite", - "funny-trains-sniff", - "good-lions-approve", - "green-cheetahs-cover", - "healthy-ladybugs-chew", - "heavy-penguins-burn", - "honest-countries-deny", - "honest-turkeys-learn", - "hungry-foxes-divide", - "hungry-peas-sing", - "khaki-brooms-kiss", - "lazy-keys-work", - "mighty-bears-glow", - "mighty-cows-greet", - "modern-pumpkins-join", - "moody-lizards-beam", - "moody-shrimps-train", - "new-roses-fail", - "nine-ties-smoke", - "ninety-eggs-lie", - "ninety-mugs-sin", - "olive-turkeys-switch", - "polite-dingos-train", - "pretty-gifts-greet", - "quick-flies-guess", - "quiet-bikes-smash", - "quiet-stingrays-fly", - "rare-elephants-arrive", - "red-cheetahs-invite", - "rotten-chefs-jog", - "serious-hornets-remember", - "six-mails-shout", - "slimy-turkeys-return", - "soft-readers-exist", - "stupid-seas-stare", - "swift-fishes-run", - "tame-games-rule", - "thick-parents-pump", - "thick-pugs-rush", - "thin-ways-exist", - "thirty-jobs-sort", - "tough-moles-whisper", - "twelve-zebras-repair", - "two-gorillas-drop", - "unlucky-deers-teach", - "unlucky-plants-give", - "warm-lamps-tease", - "wet-dolphins-love" - ] -} diff --git a/.changeset/pretty-gifts-greet.md b/.changeset/pretty-gifts-greet.md deleted file mode 100644 index 965f714a61..0000000000 --- a/.changeset/pretty-gifts-greet.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-home': patch ---- - -Add missing @rjsf/core dependency diff --git a/.changeset/proud-chairs-sleep.md b/.changeset/proud-chairs-sleep.md deleted file mode 100644 index 6df02d052d..0000000000 --- a/.changeset/proud-chairs-sleep.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-react': patch ---- - -`SearchPagination` now automatically resets the page cursor when the page limit is changed diff --git a/.changeset/quick-flies-guess.md b/.changeset/quick-flies-guess.md deleted file mode 100644 index 73e5589b98..0000000000 --- a/.changeset/quick-flies-guess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-app-api': patch ---- - -Added `FrontendHostDiscovery` for config driven discovery implementation diff --git a/.changeset/quiet-bikes-smash.md b/.changeset/quiet-bikes-smash.md deleted file mode 100644 index ca751adaf7..0000000000 --- a/.changeset/quiet-bikes-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-openapi-utils': patch ---- - -Corrected resolution of parameter nested schema to use central schemas. diff --git a/.changeset/quiet-stingrays-fly.md b/.changeset/quiet-stingrays-fly.md deleted file mode 100644 index 536ee18a6f..0000000000 --- a/.changeset/quiet-stingrays-fly.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-azure-devops': minor ---- - -The getBuildRuns function now checks contains multiple comma-separated builds and splits them to send multiple requests for each and concatenates the results. diff --git a/.changeset/rare-elephants-arrive.md b/.changeset/rare-elephants-arrive.md deleted file mode 100644 index d27f763d1f..0000000000 --- a/.changeset/rare-elephants-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-puppetdb': patch ---- - -Fixes import paths and updates documentation diff --git a/.changeset/real-baboons-vanish.md b/.changeset/real-baboons-vanish.md deleted file mode 100644 index ca09cc9bf3..0000000000 --- a/.changeset/real-baboons-vanish.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@backstage/plugin-jenkins-backend': minor -'@backstage/plugin-jenkins': minor ---- - -Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay. - -Added link to view build in Jenkins CI/CD table action column. diff --git a/.changeset/red-cheetahs-invite.md b/.changeset/red-cheetahs-invite.md deleted file mode 100644 index ef1711c761..0000000000 --- a/.changeset/red-cheetahs-invite.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-octopus-deploy': minor ---- - -Added support for Octopus Deploy spaces. The octopus.com/project-id annotation can now (optionally) be prefixed by a space identifier, for example. Spaces-1/Projects-102. -Also note that some of this plugins exported API's have changed to accommodate this change, changing from separate arguments to a single object. diff --git a/.changeset/red-parrots-attack.md b/.changeset/red-parrots-attack.md deleted file mode 100644 index 1530c17c8b..0000000000 --- a/.changeset/red-parrots-attack.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-gitlab': patch ---- - -Fix a corner case where returned users are null for bots diff --git a/.changeset/rotten-chefs-jog.md b/.changeset/rotten-chefs-jog.md deleted file mode 100644 index 120520c087..0000000000 --- a/.changeset/rotten-chefs-jog.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@backstage/plugin-scaffolder-react': patch -'@backstage/plugin-scaffolder': patch ---- - -Improvements to the `scaffolder/next` buttons UX: - -- Added padding around the "Create" button in the `Stepper` component -- Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu -- Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component diff --git a/.changeset/serious-hornets-remember.md b/.changeset/serious-hornets-remember.md deleted file mode 100644 index 05221cd055..0000000000 --- a/.changeset/serious-hornets-remember.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-circleci': patch ---- - -Hide empty time field data for queued builds which haven't started yet diff --git a/.changeset/serious-phones-flash.md b/.changeset/serious-phones-flash.md deleted file mode 100644 index 4a4afe5d4e..0000000000 --- a/.changeset/serious-phones-flash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-techdocs-module-addons-contrib': patch ---- - -Show cursor pointer when hovering on lightbox diff --git a/.changeset/shy-worms-enjoy.md b/.changeset/shy-worms-enjoy.md deleted file mode 100644 index cbfb2b5f7b..0000000000 --- a/.changeset/shy-worms-enjoy.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-user-settings': patch -'@backstage/plugin-auth-backend': patch ---- - -Fix config schema definition. diff --git a/.changeset/six-mails-shout.md b/.changeset/six-mails-shout.md deleted file mode 100644 index f803e0858e..0000000000 --- a/.changeset/six-mails-shout.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-shortcuts': patch ---- - -Marked `LocalStoredShortcuts` as deprecated, replacing it with `DefaultShortcutsApi` whose naming more clearly suggests that the shortcuts aren't necessarily stored locally (it depends on the storage implementation). diff --git a/.changeset/sixty-falcons-protect.md b/.changeset/sixty-falcons-protect.md deleted file mode 100644 index 0bc77bfbd9..0000000000 --- a/.changeset/sixty-falcons-protect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-badges-backend': patch ---- - -Removed some unused dependencies diff --git a/.changeset/slimy-turkeys-return.md b/.changeset/slimy-turkeys-return.md deleted file mode 100644 index db10000509..0000000000 --- a/.changeset/slimy-turkeys-return.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -'@backstage/plugin-permission-node': patch ---- - -`createPermissionIntegrationRouter` now accepts rules and permissions for multiple resource types. Example: - -```typescript -createPermissionIntegrationRouter({ - resources: [ - { - resourceType: 'resourceType-1', - permissions: permissionsResourceType1, - rules: rulesResourceType1, - }, - { - resourceType: 'resourceType-2', - permissions: permissionsResourceType2, - rules: rulesResourceType2, - }, - ], -}); -``` diff --git a/.changeset/soft-readers-exist.md b/.changeset/soft-readers-exist.md deleted file mode 100644 index 8fce13caca..0000000000 --- a/.changeset/soft-readers-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-common': patch ---- - -Added `HostDiscovery` to supersede deprecated `SingleHostDiscovery` (deprecated due to name) diff --git a/.changeset/spicy-spies-warn.md b/.changeset/spicy-spies-warn.md deleted file mode 100644 index 3ed26a2cc3..0000000000 --- a/.changeset/spicy-spies-warn.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-scaffolder-common': minor ---- - -Expose scaffolder permissions in new sub-aggregations. - -In addition to exporting a list of all scaffolder permissions in `scaffolderPermissions`, scaffolder-common now exports `scaffolderTemplatePermissions` and `scaffolderActionPermissions`, which contain subsets of the scaffolder permissions separated by resource type. diff --git a/.changeset/spotty-walls-serve.md b/.changeset/spotty-walls-serve.md deleted file mode 100644 index 9b0da31a5f..0000000000 --- a/.changeset/spotty-walls-serve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': patch ---- - -Fixed a bug in the Kubernetes proxy endpoint where requests to clusters configured with client-side auth providers would always fail with a 500 status. diff --git a/.changeset/stupid-seas-stare.md b/.changeset/stupid-seas-stare.md deleted file mode 100644 index f3d4f5e1f7..0000000000 --- a/.changeset/stupid-seas-stare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Fix accessibility issue on controlled select input on tab navigation + keyboard enter/space action. diff --git a/.changeset/swift-fishes-run.md b/.changeset/swift-fishes-run.md deleted file mode 100644 index ee3d1217ed..0000000000 --- a/.changeset/swift-fishes-run.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch ---- - -Bump minimum required version of `vm2` to be 3.9.17 diff --git a/.changeset/swift-students-type.md b/.changeset/swift-students-type.md deleted file mode 100644 index 577fbeb8b6..0000000000 --- a/.changeset/swift-students-type.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/backend-openapi-utils': patch ---- - -Updated README to reflect changes in `@backstage/repo-tools`. diff --git a/.changeset/thick-parents-pump.md b/.changeset/thick-parents-pump.md deleted file mode 100644 index ba65e10610..0000000000 --- a/.changeset/thick-parents-pump.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-scaffolder-node': patch ---- - -Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it. diff --git a/.changeset/thick-pugs-rush.md b/.changeset/thick-pugs-rush.md deleted file mode 100644 index 7f0171eb83..0000000000 --- a/.changeset/thick-pugs-rush.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-auth-backend': patch ---- - -Added a persistent session store through the database diff --git a/.changeset/thin-ways-exist.md b/.changeset/thin-ways-exist.md deleted file mode 100644 index fd1ecb62a4..0000000000 --- a/.changeset/thin-ways-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-react': patch ---- - -Fix text-overflow UI issue for Lifecycle spans in SearchFilter checkbox labels. diff --git a/.changeset/thirty-jobs-sort.md b/.changeset/thirty-jobs-sort.md deleted file mode 100644 index 8a40302502..0000000000 --- a/.changeset/thirty-jobs-sort.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-kubernetes-common': patch ---- - -AKS access tokens can now be sent over the wire to the Kubernetes backend. diff --git a/.changeset/three-tools-pump.md b/.changeset/three-tools-pump.md deleted file mode 100644 index ac9d3c9909..0000000000 --- a/.changeset/three-tools-pump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Fix accessibility issue with Edit Metadata Link on screen readers missing notice about opening in a new tab. diff --git a/.changeset/tiny-crews-pull.md b/.changeset/tiny-crews-pull.md deleted file mode 100644 index 8d499ac5e6..0000000000 --- a/.changeset/tiny-crews-pull.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/cli': patch ---- - -Deprecated the use of React 16 diff --git a/.changeset/tough-moles-whisper.md b/.changeset/tough-moles-whisper.md deleted file mode 100644 index 14dd76c116..0000000000 --- a/.changeset/tough-moles-whisper.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-tech-radar': patch ---- - -Added the ability to display a timeline to each entry in the details box diff --git a/.changeset/twelve-birds-boil.md b/.changeset/twelve-birds-boil.md deleted file mode 100644 index 04317c26cd..0000000000 --- a/.changeset/twelve-birds-boil.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-adr': minor ---- - -render SupportButton only if config is set diff --git a/.changeset/twelve-zebras-repair.md b/.changeset/twelve-zebras-repair.md deleted file mode 100644 index 8d74080c38..0000000000 --- a/.changeset/twelve-zebras-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-search-backend': patch ---- - -Added an OpenAPI 3.0 spec and enforced schema-first model on the router. diff --git a/.changeset/two-gorillas-drop.md b/.changeset/two-gorillas-drop.md deleted file mode 100644 index 72de66dbff..0000000000 --- a/.changeset/two-gorillas-drop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-explore': patch ---- - -Updated the example code in the "Customization" section of the README to make the imports match the components used. diff --git a/.changeset/unlucky-deers-teach.md b/.changeset/unlucky-deers-teach.md deleted file mode 100644 index b773e9090f..0000000000 --- a/.changeset/unlucky-deers-teach.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': minor ---- - -Implement events support for `GithubMultiOrgEntityProvider` - -**BREAKING:** Passing in a custom `teamTransformer` will now correctly completely override the default transformer behavior diff --git a/.changeset/unlucky-plants-give.md b/.changeset/unlucky-plants-give.md deleted file mode 100644 index 504b475727..0000000000 --- a/.changeset/unlucky-plants-give.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': patch ---- - -Start capturing sidebar click events in analytics by default. diff --git a/.changeset/warm-lamps-tease.md b/.changeset/warm-lamps-tease.md deleted file mode 100644 index 954197dd13..0000000000 --- a/.changeset/warm-lamps-tease.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@backstage/plugin-kubernetes-backend': minor ---- - -Update `aws-sdk` client from v2 to v3. - -**BREAKING**: The `AwsIamKubernetesAuthTranslator` class no longer exposes the following methods `awsGetCredentials`, `getBearerToken`, `getCredentials` and `validCredentials`. There is no replacement for these methods. diff --git a/.changeset/wet-dolphins-love.md b/.changeset/wet-dolphins-love.md deleted file mode 100644 index 637d26ca70..0000000000 --- a/.changeset/wet-dolphins-love.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend-module-github': patch ---- - -Updated the `team.edited` event emitted from `GithubOrgEntityProvider` to also include teams description. diff --git a/docs/releases/v1.14.0-changelog.md b/docs/releases/v1.14.0-changelog.md new file mode 100644 index 0000000000..eae0d82e71 --- /dev/null +++ b/docs/releases/v1.14.0-changelog.md @@ -0,0 +1,2795 @@ +# Release v1.14.0 + +## @backstage/config-loader@1.3.0 + +### Minor Changes + +- 201206132da: Introduced a new config source system to replace `loadConfig`. There is a new `ConfigSource` interface along with utilities provided by `ConfigSources`, as well as a number of built-in configuration source implementations. The new system is more flexible and makes it easier to create new and reusable sources of configuration, such as loading configuration from secret providers. + + The following is an example of how to load configuration using the default behavior: + + ```ts + const source = ConfigSources.default({ + argv: options?.argv, + remote: options?.remote, + }); + const config = await ConfigSources.toConfig(source); + ``` + + The `ConfigSource` interface looks like this: + + ```ts + export interface ConfigSource { + readConfigData(options?: ReadConfigDataOptions): AsyncConfigSourceIterator; + } + ``` + + It is best implemented using an async iterator: + + ```ts + class MyConfigSource implements ConfigSource { + async *readConfigData() { + yield { + config: [ + { + context: 'example', + data: { backend: { baseUrl: 'http://localhost' } }, + }, + ], + }; + } + } + ``` + +### Patch Changes + +- 7c116bcac7f: Fixed the way that some request errors are thrown +- 473db605a4f: Added a new `noUndeclaredProperties` option to `SchemaLoader` to support enforcing that there are no extra keys when verifying config. +- Updated dependencies + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/core-app-api@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 + +## @backstage/repo-tools@0.3.0 + +### Minor Changes + +- 799c33047ed: **BREAKING**: The OpenAPI commands are now found within the `schema openapi` sub-command. For example `yarn backstage-repo-tools schema:openapi:verify` is now `yarn backstage-repo-tools schema openapi verify`. +- 27956d78671: Generated OpenAPI files now have a `.generated.ts` file name and a warning header at the top, to highlight that they should not be edited by hand. + +### Patch Changes + +- Updated dependencies + - @backstage/cli-common@0.1.12 + - @backstage/cli-node@0.1.0 + - @backstage/errors@1.1.5 + +## @backstage/theme@0.3.0 + +### Minor Changes + +- 98c0c199b15: Updates light theme's primary foreground and `running` status indicator colours to meet WCAG. Previously #2E77D0 changed to #1F5493. + +### Patch Changes + +- 83b45f9df50: Fix accessibility issue with Backstage Table's header style + +## @backstage/plugin-adr@0.6.0 + +### Minor Changes + +- b12cd5dc221: render SupportButton only if config is set + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-adr-common@0.2.9 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-analytics-module-ga4@0.1.0 + +### Minor Changes + +- 22b46f7f562: Plugin provides Backstage Analytics API for Google Analytics 4. Once installed and configured, analytics events will be sent to GA4 as your users navigate and use your Backstage instance + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-azure-devops@0.3.0 + +### Minor Changes + +- 877df261085: The getBuildRuns function now checks contains multiple comma-separated builds and splits them to send multiple requests for each and concatenates the results. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-badges-backend@0.2.0 + +### Minor Changes + +- a0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges. + + Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version. + + **BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options. + +### Patch Changes + +- 0cd552c28d8: Removed some unused dependencies +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-catalog@1.11.0 + +### Minor Changes + +- 2258dcae970: Added an entity namespace filter and column on the default catalog page. + + If you have a custom version of the catalog page, you can add this filter in your CatalogPage code: + + ```ts + + + + + + /* if you want namespace picker */ + + + + + + + ``` + + The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-catalog-backend-module-aws@0.2.0 + +### Minor Changes + +- 1a3b5f1e390: **BREAKING**: AwsOrganizationCloudAccountProcessor.fromConfig now returns a promise instead of the instance directly. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/plugin-kubernetes-common@0.6.3 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + +## @backstage/plugin-catalog-backend-module-github@0.3.0 + +### Minor Changes + +- 970678adbe2: Implement events support for `GithubMultiOrgEntityProvider` + + **BREAKING:** Passing in a custom `teamTransformer` will now correctly completely override the default transformer behavior + +### Patch Changes + +- 78bb674a713: Fixed bug in queryWithPaging that caused secondary rate limit errors in GitHub with organizations having more than 1000 repositories. This change makes one request per second to avoid concurrency issues. +- bd101cefd37: Updated the `team.edited` event emitted from `GithubOrgEntityProvider` to also include teams description. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-catalog-react@1.6.0 + +### Minor Changes + +- 2258dcae970: Added an entity namespace filter and column on the default catalog page. + + If you have a custom version of the catalog page, you can add this filter in your CatalogPage code: + + ```ts + + + + + + /* if you want namespace picker */ + + + + + + + ``` + + The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-permission-react@0.4.12 + +## @backstage/plugin-devtools@0.1.0 + +### Minor Changes + +- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details! + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-devtools-common@0.1.0 + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-react@0.4.12 + +## @backstage/plugin-devtools-backend@0.1.0 + +### Minor Changes + +- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details! + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-devtools-common@0.1.0 + - @backstage/backend-common@0.18.5 + - @backstage/config-loader@1.3.0 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-devtools-common@0.1.0 + +### Minor Changes + +- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details! + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-events-backend-module-aws-sqs@0.2.0 + +### Minor Changes + +- 2c5661f3899: Allow endpoint configuration for sqs, enabling use of localstack for testing. + +### Patch Changes + +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-jenkins@0.8.0 + +### Minor Changes + +- cf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay. + + Added link to view build in Jenkins CI/CD table action column. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-jenkins-common@0.1.15 + +## @backstage/plugin-jenkins-backend@0.2.0 + +### Minor Changes + +- cf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay. + + Added link to view build in Jenkins CI/CD table action column. + +### Patch Changes + +- 670a2dd6f4e: Fix handling of slashes in branch names +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-jenkins-common@0.1.15 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-kubernetes@0.9.0 + +### Minor Changes + +- 280ec10c18e: Added Pod logs components for Kubernetes plugin + + **BREAKING**: `kubernetesProxyApi` for custom plugins built with components from the Kubernetes plugin apis, `kubernetesProxyApi` should be added to the plugin's API list. + + ... + export const kubernetesPlugin = createPlugin({ + id: 'kubernetes', + apis: [ + ... + createApiFactory({ + api: kubernetesProxyApiRef, + deps: { + kubernetesApi: kubernetesApiRef, + }, + factory: ({ kubernetesApi }) => + new KubernetesProxyClient({ + kubernetesApi, + }), + }), + + **BREAKING**: `KubernetesDrawer` is now called `KubernetesStructuredMetadataTableDrawer` so that we can do more than just show `StructuredMetadataTable` + + `import { KubernetesDrawer } from "@backstage/plugin-kubernetes"` + + should now be: + + `import { KubernetesStructuredMetadataTableDrawer } from "@backstage/plugin-kubernetes"` + +### Patch Changes + +- c7bad1005ba: The Kubernetes plugin now requests AKS access tokens from Azure when retrieving + objects from clusters configured with `authProvider: aks` and sets `auth.aks` in + its request bodies appropriately. +- a160e02c3d7: Omit managed fields in the Kubernetes resource YAML display. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/plugin-kubernetes-common@0.6.3 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-kubernetes-backend@0.11.0 + +### Minor Changes + +- f4114f02d49: Allow fetching pod metrics limited by a `labelSelector`. + + This is used by the Kubernetes tab on a components' page and leads to much smaller responses being received from Kubernetes, especially with larger Kubernetes clusters. + +- 890988341e9: Update `aws-sdk` client from v2 to v3. + + **BREAKING**: The `AwsIamKubernetesAuthTranslator` class no longer exposes the following methods `awsGetCredentials`, `getBearerToken`, `getCredentials` and `validCredentials`. There is no replacement for these methods. + +### Patch Changes + +- 05f1d74539d: Kubernetes clusters now support `authProvider: aks`. When configured this way, + the `retrieveObjectsByServiceId` action will use the `auth.aks` value in the + request body as a bearer token to authenticate with Kubernetes. +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- a341129b754: Fixed a bug in the Kubernetes proxy endpoint where requests to clusters configured with client-side auth providers would always fail with a 500 status. +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-kubernetes-common@0.6.3 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-octopus-deploy@0.2.0 + +### Minor Changes + +- 87211bc2873: Added support for Octopus Deploy spaces. The octopus.com/project-id annotation can now (optionally) be prefixed by a space identifier, for example. Spaces-1/Projects-102. + Also note that some of this plugins exported API's have changed to accommodate this change, changing from separate arguments to a single object. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-scaffolder-backend@1.14.0 + +### Minor Changes + +- 67115f532b8: Expose both types of scaffolder permissions and rules through the metadata endpoint. + + The metadata endpoint now correctly exposes both types of scaffolder permissions and rules (for both the template and action resource types) through the metadata endpoint. + +- a73b3c0b097: Add ability to use `defaultNamespace` and `defaultKind` for scaffolder action `catalog:fetch` + +### Patch Changes + +- 1a48b84901c: Bump minimum required version of `vm2` to be 3.9.18 +- d20c87966a4: Bump minimum required version of `vm2` to be 3.9.17 +- 6d954de4b06: Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.0 + +### Minor Changes + +- 439e2986be1: Add a new scaffolder action for gitlab to ensure a group exists + +### Patch Changes + +- f1496d4ab6f: Fix input schema validation issue for gitlab actions: + + - gitlab:group:ensureExists + - gitlab:projectAccessToken:create + - gitlab:projectDeployToken:create + - gitlab:projectVariable:create + +- Updated dependencies + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-scaffolder-common@1.3.0 + +### Minor Changes + +- 82e10a6939c: Add support for Markdown text blob outputs from templates +- 67115f532b8: Expose scaffolder permissions in new sub-aggregations. + + In addition to exporting a list of all scaffolder permissions in `scaffolderPermissions`, scaffolder-common now exports `scaffolderTemplatePermissions` and `scaffolderActionPermissions`, which contain subsets of the scaffolder permissions separated by resource type. + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-scaffolder-react@1.4.0 + +### Minor Changes + +- 82e10a6939c: Add support for Markdown text blob outputs from templates + +### Patch Changes + +- ad1a1429de4: Improvements to the `scaffolder/next` buttons UX: + + - Added padding around the "Create" button in the `Stepper` component + - Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu + - Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4 + +## @backstage/plugin-search@1.3.0 + +### Minor Changes + +- 750e45539ad: Add close button & improve search input. + + MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly. + + SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given. + +### Patch Changes + +- 0e3d8d69318: Fixed 404 Error when fetching search results due to URL encoding changes +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-search-backend-module-elasticsearch@1.3.0 + +### Minor Changes + +- 3d72bdb41c7: Upgrade to aws-sdk v3 and include OpenSearch Serverless support + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-search-react@1.6.0 + +### Minor Changes + +- 750e45539ad: Add close button & improve search input. + + MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly. + + SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given. + +- 1ce7f84b2e8: accepts InputProp property that can override keys from default + +### Patch Changes + +- f785f0804cd: `SearchPagination` now automatically resets the page cursor when the page limit is changed +- adb31096bc2: Fix text-overflow UI issue for Lifecycle spans in SearchFilter checkbox labels. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/app-defaults@1.3.1 + +### Patch Changes + +- 575d9178eff: Added a System Icon for resource entities. + This can be obtained using: + + ```ts + useApp().getSystemIcon('kind:resource'); + ``` + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-app-api@1.8.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-permission-react@0.4.12 + +## @backstage/backend-app-api@0.4.3 + +### Patch Changes + +- cf13b482f9e: Switch `configServiceFactory` to use `ConfigSources` from `@backstage/config-loader` to load config. +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config-loader@1.3.0 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/backend-common@0.18.5 + +### Patch Changes + +- 0297f7a54af: Remove the direct dependency on deprecated "request" library +- 284db225083: Updated the `DatabaseManager` to include the plugin id in the Postgres application name of the database connections created for each plugin. +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- 42d817e76ab: Added `HostDiscovery` to supersede deprecated `SingleHostDiscovery` (deprecated due to name) +- Updated dependencies + - @backstage/config-loader@1.3.0 + - @backstage/integration@1.4.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/backend-app-api@0.4.3 + - @backstage/backend-dev-utils@0.1.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/backend-defaults@0.1.10 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-app-api@0.4.3 + - @backstage/backend-plugin-api@0.5.2 + +## @backstage/backend-openapi-utils@0.0.2 + +### Patch Changes + +- fe16bd39e83: Use permalinks for links including a line number reference +- 27956d78671: Adjusted README accordingly after the generated output now has a `.generated.ts` extension +- 021cfbb5152: Corrected resolution of parameter nested schema to use central schemas. +- 799c33047ed: Updated README to reflect changes in `@backstage/repo-tools`. + +## @backstage/backend-plugin-api@0.5.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/backend-tasks@0.5.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/backend-test-utils@0.1.37 + +### Patch Changes + +- 63af7f6d53f: Allow specifying custom Docker registry for database tests +- b1eb268bf9d: Added `POSTGRES_11` and `POSTGRES_12` as supported test database IDs. +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-app-api@0.4.3 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + +## @backstage/cli@0.22.7 + +### Patch Changes + +- 473db605a4f: Enable strict config checking during `backstage-cli config:check` with the new `--strict` option which will surface schema errors. +- d548886872d: Deprecated the use of React 16 +- Updated dependencies + - @backstage/config-loader@1.3.0 + - @backstage/cli-common@0.1.12 + - @backstage/cli-node@0.1.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/eslint-plugin@0.1.3 + - @backstage/release-manifests@0.0.9 + - @backstage/types@1.0.2 + +## @backstage/core-components@0.13.1 + +### Patch Changes + +- 83b45f9df50: Fix accessibility issue with Backstage Table's header style +- e97769f7c0b: Fix accessibility issue on controlled select input on tab navigation + keyboard enter/space action. +- b1f13cb38aa: Fix accessibility issue with Edit Metadata Link on screen readers missing notice about opening in a new tab. +- 26cff1a5dfb: Start capturing sidebar click events in analytics by default. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/version-bridge@1.0.4 + +## @backstage/create-app@0.5.1 + +### Patch Changes + +- 1d5e42655cd: Correct command to create new plugins +- e04bb20bdc4: Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.12 + +## @backstage/dev-utils@1.0.15 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/app-defaults@1.3.1 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-app-api@1.8.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/test-utils@1.3.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/integration@1.4.5 + +### Patch Changes + +- b026275bcc8: Fixed a bug where the wrong credentials would be selected when using multiple GitHub app integrations. +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/integration-aws-node@0.1.3 + +### Patch Changes + +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/integration-react@1.1.13 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + +## @techdocs/cli@1.4.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-techdocs-node@1.7.1 + - @backstage/catalog-model@1.3.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + +## @backstage/test-utils@1.3.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-app-api@1.8.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-permission-react@0.4.12 + +## @backstage/plugin-adr-backend@0.3.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-adr-common@0.2.9 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-adr-common@0.2.9 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.4.5 + - @backstage/catalog-model@1.3.0 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-airbrake@0.3.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/dev-utils@1.0.15 + - @backstage/test-utils@1.3.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-airbrake-backend@0.2.18 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + +## @backstage/plugin-allure@0.1.34 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-analytics-module-ga@0.1.29 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-apache-airflow@0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-api-docs@0.9.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-catalog@1.11.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-apollo-explorer@0.1.11 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-app-backend@0.3.45 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config-loader@1.3.0 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + +## @backstage/plugin-auth-backend@0.18.3 + +### Patch Changes + +- 7c116bcac7f: Fixed the way that some request errors are thrown +- 473db605a4f: Fix config schema definition. +- 3ffcdac7d07: Added a persistent session store through the database +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/plugin-auth-node@0.2.14 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-azure-devops-backend@0.3.24 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-sites@0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-azure-sites-backend@0.1.7 + +### Patch Changes + +- d66d4f916aa: Updated URL to `/health` and corrected typos in the `README.md` +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-badges@0.2.42 + +### Patch Changes + +- a0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges. + + Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version. + + **BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options. + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-bazaar@0.2.8 + +### Patch Changes + +- 900880ab7c3: Fixed `validateDOMNesting` warnings +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/cli@0.22.7 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-catalog@1.11.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-bazaar-backend@0.2.8 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-bitbucket-cloud-common@0.2.6 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.4.5 + +## @backstage/plugin-bitrise@0.1.45 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-catalog-backend@1.9.1 + +### Patch Changes + +- ce8d203235b: Ensure that entity cache state is only written to the database when actually changed +- 485a6c5f7b5: Internal refactoring for performance in the service handlers +- 3587a968dcd: Fixed a bug in the `queryEntities` endpoint that was causing filtered entities to be included in cursor requests. +- ce335df9d1c: Improve the query for orphan pruning +- 27956d78671: Adjusted the OpenAPI schema file name according to the new structure +- 51064e6e5ee: Change orphan cleanup task to only log a message if it deleted entities. +- 12a345317ab: Remove unnecessary join in the entity facets endpoint, exclude nulls +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/plugin-search-backend-module-catalog@0.1.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-catalog-backend-module-azure@0.1.16 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.12 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-bitbucket-cloud-common@0.2.6 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.12 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-bitbucket-cloud-common@0.2.6 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.10 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.13 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-catalog-backend-module-gitlab@0.2.1 + +### Patch Changes + +- b12c41fafc4: Fix a corner case where returned users are null for bots +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.3.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-events-node@0.2.6 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.12 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.4 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-common@1.0.13 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.11 + +### Patch Changes + +- accaceadffa: Fixed bug in `jsonSchemaRefPlaceholderResolver` where relative $ref files were resolved through file system instead of base URL of file +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.2 + +### Patch Changes + +- 95b2168d71b: Fixes import paths and updates documentation +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/plugin-catalog-graph@0.2.30 + +### Patch Changes + +- d446f8fb0a8: Expose all `EntityRelationsGraphProps` to Catalog Graph Page +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-catalog-import@0.9.8 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-common@1.0.13 + +## @backstage/plugin-catalog-node@1.3.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + +## @backstage/plugin-cicd-statistics@0.1.20 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.14 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-cicd-statistics@0.1.20 + +## @backstage/plugin-circleci@0.3.18 + +### Patch Changes + +- 451b3cadb3d: Fixes row display for in progress jobs to not display trailing "took" +- 1c4958d905f: Hide empty time field data for queued builds which haven't started yet +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-cloudbuild@0.3.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-code-climate@0.1.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-code-coverage@0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-code-coverage-backend@0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-codescene@0.1.13 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-config-schema@0.1.41 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/plugin-cost-insights@0.12.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-cost-insights-common@0.1.1 + +## @backstage/plugin-dynatrace@5.0.0 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-entity-feedback@0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-entity-feedback-common@0.1.1 + +## @backstage/plugin-entity-feedback-backend@0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-entity-feedback-common@0.1.1 + +## @backstage/plugin-entity-validation@0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-common@1.0.13 + +## @backstage/plugin-events-backend@0.2.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-events-backend-module-azure@0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-events-backend-module-gerrit@0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-events-backend-module-github@0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-events-backend-module-gitlab@0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-events-backend-test-utils@0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.6 + +## @backstage/plugin-events-node@0.2.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + +## @backstage/plugin-explore@0.4.3 + +### Patch Changes + +- 1996920782b: Make sure that the first support button row does not break across lines +- 4851581deb6: Display the title of the entity on the explore card if present, otherwise stick to the name +- a6025e25d99: Updated the example code in the "Customization" section of the README to make the imports match the components used. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-explore-react@0.0.28 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-explore-backend@0.0.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-search-backend-module-explore@0.1.1 + - @backstage/config@1.0.7 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-firehydrant@0.2.2 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-fossa@0.2.50 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-gcalendar@0.3.14 + +### Patch Changes + +- f493ccb9589: Pass user info email scope on auth refresh to resolve invalid credentials error +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-gcp-projects@0.3.37 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-git-release-manager@0.3.31 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-github-actions@0.5.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-github-deployments@0.1.49 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-github-issues@0.2.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-github-pull-requests-board@0.1.12 + +### Patch Changes + +- cf125c36569: The `EntityTeamPullRequestsContent` and `EntityTeamPullRequestsCard` support the ability to view the labels/tags added to each PR +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-gitops-profiles@0.3.36 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-gocd@0.1.24 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-graphiql@0.2.50 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-graphql-backend@0.1.35 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-graphql@0.3.20 + +## @backstage/plugin-graphql-voyager@0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-home@0.5.2 + +### Patch Changes + +- acca8966465: Remove object-hash dependency +- 957cd9b8958: Use the semantic time tag for rendering world clocks on homepage headers. +- 0e19e7b0f3a: Bump to using the later v5 versions of `@rjsf/*` +- 5272cfabc3b: Add missing @rjsf/core dependency +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-ilert@0.2.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-kafka@0.3.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-kafka-backend@0.2.38 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-kubernetes-common@0.6.3 + +### Patch Changes + +- 05f1d74539d: AKS access tokens can now be sent over the wire to the Kubernetes backend. +- Updated dependencies + - @backstage/catalog-model@1.3.0 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-lighthouse@0.4.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-lighthouse-common@0.1.1 + +## @backstage/plugin-lighthouse-backend@0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-lighthouse-common@0.1.1 + +## @backstage/plugin-linguist@0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-linguist-common@0.1.0 + +## @backstage/plugin-linguist-backend@0.2.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-linguist-common@0.1.0 + +## @backstage/plugin-microsoft-calendar@0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-newrelic@0.3.36 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-newrelic-dashboard@0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-org@0.6.8 + +### Patch Changes + +- 6e387c077a4: Changed the MembersListCard component to allow displaying aggregated members when viewing a group. Now, a toggle switch can be displayed that lets you switch between showing direct members and aggregated members. + + To enable this new feature, set the showAggregateMembersToggle prop on EntityMembersListCard: + + ```jsx + // In packages/app/src/components/catalog/EntityPage.tsx + const groupPage = ( + // ... + + // ... + ); + ``` + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-org-react@0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-pagerduty@0.5.11 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-periskop@0.1.16 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-periskop-backend@0.1.16 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + +## @backstage/plugin-permission-backend@0.5.20 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-permission-node@0.7.8 + +### Patch Changes + +- a788e715cfc: `createPermissionIntegrationRouter` now accepts rules and permissions for multiple resource types. Example: + + ```typescript + createPermissionIntegrationRouter({ + resources: [ + { + resourceType: 'resourceType-1', + permissions: permissionsResourceType1, + rules: rulesResourceType1, + }, + { + resourceType: 'resourceType-2', + permissions: permissionsResourceType2, + rules: rulesResourceType2, + }, + ], + }); + ``` + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + +## @backstage/plugin-playlist@0.1.9 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-permission-react@0.4.12 + - @backstage/plugin-playlist-common@0.1.6 + +## @backstage/plugin-playlist-backend@0.3.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-playlist-common@0.1.6 + +## @backstage/plugin-proxy-backend@0.2.39 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + +## @backstage/plugin-puppetdb@0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-rollbar@0.4.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-rollbar-backend@0.1.42 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + +## @backstage/plugin-scaffolder@1.13.1 + +### Patch Changes + +- d560d457c98: Fix case GitLab workspace is a nested subgroup + +- ad1a1429de4: Improvements to the `scaffolder/next` buttons UX: + + - Added padding around the "Create" button in the `Stepper` component + - Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu + - Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/plugin-scaffolder-react@1.4.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-react@0.4.12 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.2 + +### Patch Changes + +- 7c116bcac7f: Fixed the way that some request errors are thrown +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.21 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.14 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.5 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.18 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + +## @backstage/plugin-scaffolder-node@0.1.3 + +### Patch Changes + +- 6d954de4b06: Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it. +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/types@1.0.2 + +## @backstage/plugin-search-backend@1.3.1 + +### Patch Changes + +- 021cfbb5152: Added an OpenAPI 3.0 spec and enforced schema-first model on the router. +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-search-backend-module-catalog@0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-search-backend-module-explore@0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-search-backend-module-pg@0.5.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-search-backend-module-techdocs@0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-techdocs-node@1.7.1 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-search-backend-node@1.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-sentry@0.5.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-shortcuts@0.3.10 + +### Patch Changes + +- 8a7174e297c: Marked `LocalStoredShortcuts` as deprecated, replacing it with `DefaultShortcutsApi` whose naming more clearly suggests that the shortcuts aren't necessarily stored locally (it depends on the storage implementation). +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/types@1.0.2 + +## @backstage/plugin-sonarqube@0.6.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-sonarqube-react@0.1.5 + +## @backstage/plugin-sonarqube-backend@0.1.10 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-splunk-on-call@0.4.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-stack-overflow@0.1.15 + +### Patch Changes + +- c1ff65f315a: StackOverflowSearchResultListItem can now accept an empty result prop so that it can be rendered in the suggested SearchResultListItem pattern. +- Updated dependencies + - @backstage/plugin-home@0.5.2 + - @backstage/theme@0.3.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-stack-overflow-backend@0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-stackstorm@0.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-tech-insights@0.3.10 + +### Patch Changes + +- 22963209d23: Added the possibility to customize the check description in the scorecard component. + + - The `CheckResultRenderer` type now exposes an optional `description` method that allows to overwrite the description with a different string or a React component for a provided check result. + + Until now only the `BooleanCheck` element could be overridden, but from now on it's also possible to override the description for a check. + As an example, the description could change depending on the check result. Refer to the [README](https://github.com/backstage/backstage/blob/master/plugins/tech-insights/README.md#adding-custom-rendering-components) file for more details + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-tech-insights-common@0.2.10 + +## @backstage/plugin-tech-insights-backend@0.5.11 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-tech-insights-node@0.4.3 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-tech-insights-common@0.2.10 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.29 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-tech-insights-node@0.4.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-tech-insights-common@0.2.10 + +## @backstage/plugin-tech-insights-node@0.4.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-tech-insights-common@0.2.10 + +## @backstage/plugin-tech-radar@0.6.4 + +### Patch Changes + +- be4fa53fab8: Fix description links when clicking entry in radar. +- Added the ability to display a timeline to each entry in the details box +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-techdocs@1.6.2 + +### Patch Changes + +- 863beb49498: Re-add the possibility to have trailing slashes in Techdocs navigation. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.13 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-techdocs@1.6.2 + - @backstage/plugin-catalog@1.11.0 + - @backstage/core-app-api@1.8.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/test-utils@1.3.1 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-techdocs-backend@1.6.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-techdocs-node@1.7.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.13 + +### Patch Changes + +- 6afc7f052ca: Show cursor pointer when hovering on lightbox +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/core-plugin-api@1.5.1 + +## @backstage/plugin-techdocs-node@1.7.1 + +### Patch Changes + +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-search-common@1.2.3 + +## @backstage/plugin-techdocs-react@1.1.6 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/version-bridge@1.0.4 + +## @backstage/plugin-todo@0.2.20 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-todo-backend@0.1.42 + +### Patch Changes + +- 901f1ada325: Added OpenAPI schema +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-user-settings@0.7.3 + +### Patch Changes + +- 473db605a4f: Fix config schema definition. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-app-api@1.8.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/plugin-user-settings-backend@0.1.9 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## @backstage/plugin-vault@0.1.12 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## @backstage/plugin-vault-backend@0.3.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + +## @backstage/plugin-xcmetrics@0.2.38 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + +## example-app@0.2.83 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-tech-insights@0.3.10 + - @backstage/plugin-scaffolder@1.13.1 + - @backstage/plugin-devtools@0.1.0 + - @backstage/plugin-kubernetes@0.9.0 + - @backstage/plugin-search@1.3.0 + - @backstage/plugin-home@0.5.2 + - @backstage/plugin-explore@0.4.3 + - @backstage/theme@0.3.0 + - @backstage/plugin-techdocs@1.6.2 + - @backstage/app-defaults@1.3.1 + - @backstage/plugin-badges@0.2.42 + - @backstage/plugin-tech-radar@0.6.4 + - @backstage/cli@0.22.7 + - @backstage/plugin-stack-overflow@0.1.15 + - @backstage/plugin-gcalendar@0.3.14 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-app-api@1.8.0 + - @backstage/plugin-scaffolder-react@1.4.0 + - @backstage/plugin-catalog-graph@0.2.30 + - @backstage/plugin-circleci@0.3.18 + - @backstage/plugin-search-react@1.6.0 + - @backstage/plugin-org@0.6.8 + - @backstage/core-components@0.13.1 + - @backstage/plugin-azure-devops@0.3.0 + - @backstage/plugin-jenkins@0.8.0 + - @backstage/plugin-octopus-deploy@0.2.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.13 + - @backstage/plugin-user-settings@0.7.3 + - @backstage/plugin-shortcuts@0.3.10 + - @backstage/integration-react@1.1.13 + - @backstage/plugin-airbrake@0.3.18 + - @backstage/plugin-api-docs@0.9.3 + - @backstage/plugin-azure-sites@0.1.7 + - @backstage/plugin-cloudbuild@0.3.18 + - @backstage/plugin-code-coverage@0.2.11 + - @backstage/plugin-cost-insights@0.12.7 + - @backstage/plugin-dynatrace@5.0.0 + - @backstage/plugin-entity-feedback@0.2.1 + - @backstage/plugin-gcp-projects@0.3.37 + - @backstage/plugin-github-actions@0.5.18 + - @backstage/plugin-gocd@0.1.24 + - @backstage/plugin-graphiql@0.2.50 + - @backstage/plugin-kafka@0.3.18 + - @backstage/plugin-lighthouse@0.4.3 + - @backstage/plugin-linguist@0.1.3 + - @backstage/plugin-microsoft-calendar@0.1.3 + - @backstage/plugin-newrelic@0.3.36 + - @backstage/plugin-pagerduty@0.5.11 + - @backstage/plugin-playlist@0.1.9 + - @backstage/plugin-puppetdb@0.1.1 + - @backstage/plugin-rollbar@0.4.18 + - @backstage/plugin-sentry@0.5.3 + - @backstage/plugin-stackstorm@0.1.2 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/plugin-todo@0.2.20 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-apache-airflow@0.2.11 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-catalog-import@0.9.8 + - @backstage/plugin-linguist-common@0.1.0 + - @backstage/plugin-newrelic-dashboard@0.2.11 + - @backstage/plugin-permission-react@0.4.12 + - @backstage/plugin-search-common@1.2.3 + - @internal/plugin-catalog-customized@0.0.10 + +## example-backend@0.2.83 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/plugin-devtools-backend@0.1.0 + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/plugin-kubernetes-backend@0.11.0 + - @backstage/plugin-auth-backend@0.18.3 + - @backstage/plugin-badges-backend@0.2.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.0 + - @backstage/integration@1.4.5 + - @backstage/plugin-todo-backend@0.1.42 + - @backstage/plugin-jenkins-backend@0.2.0 + - @backstage/plugin-azure-sites-backend@0.1.7 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-search-backend@1.3.1 + - example-app@0.2.83 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-app-backend@0.3.45 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/plugin-entity-feedback-backend@0.1.3 + - @backstage/plugin-events-backend@0.2.6 + - @backstage/plugin-playlist-backend@0.3.1 + - @backstage/plugin-rollbar-backend@0.1.42 + - @backstage/plugin-search-backend-module-pg@0.5.6 + - @backstage/plugin-tech-insights-backend@0.5.11 + - @backstage/plugin-techdocs-backend@1.6.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.14 + - @backstage/plugin-adr-backend@0.3.3 + - @backstage/plugin-azure-devops-backend@0.3.24 + - @backstage/plugin-code-coverage-backend@0.2.11 + - @backstage/plugin-explore-backend@0.0.7 + - @backstage/plugin-graphql-backend@0.1.35 + - @backstage/plugin-kafka-backend@0.2.38 + - @backstage/plugin-lighthouse-backend@0.2.1 + - @backstage/plugin-linguist-backend@0.2.2 + - @backstage/plugin-permission-backend@0.5.20 + - @backstage/plugin-proxy-backend@0.2.39 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.29 + - @backstage/plugin-tech-insights-node@0.4.3 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-events-node@0.2.6 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + +## example-backend-next@0.0.11 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/plugin-kubernetes-backend@0.11.0 + - @backstage/plugin-todo-backend@0.1.42 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-search-backend@1.3.1 + - @backstage/backend-defaults@0.1.10 + - @backstage/plugin-app-backend@0.3.45 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-search-backend-module-catalog@0.1.1 + - @backstage/plugin-search-backend-module-explore@0.1.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.1 + - @backstage/plugin-techdocs-backend@1.6.2 + - @backstage/plugin-permission-backend@0.5.20 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/plugin-permission-common@0.7.5 + +## e2e-test@0.2.3 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.1 + - @backstage/cli-common@0.1.12 + - @backstage/errors@1.1.5 + +## techdocs-cli-embedded-app@0.2.82 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-techdocs@1.6.2 + - @backstage/app-defaults@1.3.1 + - @backstage/cli@0.22.7 + - @backstage/plugin-catalog@1.11.0 + - @backstage/core-app-api@1.8.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/test-utils@1.3.1 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + +## @internal/plugin-catalog-customized@0.0.10 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-catalog@1.11.0 + +## @internal/plugin-todo-list@1.0.13 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + +## @internal/plugin-todo-list-backend@1.0.13 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 diff --git a/package.json b/package.json index 7e77896821..3a7e05d65a 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@types/react": "^17", "@types/react-dom": "^17" }, - "version": "1.14.0-next.2", + "version": "1.14.0", "dependencies": { "@backstage/errors": "workspace:^", "@manypkg/get-packages": "^1.1.3" diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index a4ab5e013c..7cb6737b73 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/app-defaults +## 1.3.1 + +### Patch Changes + +- 575d9178eff: Added a System Icon for resource entities. + This can be obtained using: + + ```ts + useApp().getSystemIcon('kind:resource'); + ``` + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-app-api@1.8.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-permission-react@0.4.12 + ## 1.3.1-next.2 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index f1c806ebe2..90f50d0eff 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/app-defaults", "description": "Provides the default wiring of a Backstage App", - "version": "1.3.1-next.2", + "version": "1.3.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 84f7ab32a1..5fdee05829 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,77 @@ # example-app +## 0.2.83 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-tech-insights@0.3.10 + - @backstage/plugin-scaffolder@1.13.1 + - @backstage/plugin-devtools@0.1.0 + - @backstage/plugin-kubernetes@0.9.0 + - @backstage/plugin-search@1.3.0 + - @backstage/plugin-home@0.5.2 + - @backstage/plugin-explore@0.4.3 + - @backstage/theme@0.3.0 + - @backstage/plugin-techdocs@1.6.2 + - @backstage/app-defaults@1.3.1 + - @backstage/plugin-badges@0.2.42 + - @backstage/plugin-tech-radar@0.6.4 + - @backstage/cli@0.22.7 + - @backstage/plugin-stack-overflow@0.1.15 + - @backstage/plugin-gcalendar@0.3.14 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-app-api@1.8.0 + - @backstage/plugin-scaffolder-react@1.4.0 + - @backstage/plugin-catalog-graph@0.2.30 + - @backstage/plugin-circleci@0.3.18 + - @backstage/plugin-search-react@1.6.0 + - @backstage/plugin-org@0.6.8 + - @backstage/core-components@0.13.1 + - @backstage/plugin-azure-devops@0.3.0 + - @backstage/plugin-jenkins@0.8.0 + - @backstage/plugin-octopus-deploy@0.2.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.13 + - @backstage/plugin-user-settings@0.7.3 + - @backstage/plugin-shortcuts@0.3.10 + - @backstage/integration-react@1.1.13 + - @backstage/plugin-airbrake@0.3.18 + - @backstage/plugin-api-docs@0.9.3 + - @backstage/plugin-azure-sites@0.1.7 + - @backstage/plugin-cloudbuild@0.3.18 + - @backstage/plugin-code-coverage@0.2.11 + - @backstage/plugin-cost-insights@0.12.7 + - @backstage/plugin-dynatrace@5.0.0 + - @backstage/plugin-entity-feedback@0.2.1 + - @backstage/plugin-gcp-projects@0.3.37 + - @backstage/plugin-github-actions@0.5.18 + - @backstage/plugin-gocd@0.1.24 + - @backstage/plugin-graphiql@0.2.50 + - @backstage/plugin-kafka@0.3.18 + - @backstage/plugin-lighthouse@0.4.3 + - @backstage/plugin-linguist@0.1.3 + - @backstage/plugin-microsoft-calendar@0.1.3 + - @backstage/plugin-newrelic@0.3.36 + - @backstage/plugin-pagerduty@0.5.11 + - @backstage/plugin-playlist@0.1.9 + - @backstage/plugin-puppetdb@0.1.1 + - @backstage/plugin-rollbar@0.4.18 + - @backstage/plugin-sentry@0.5.3 + - @backstage/plugin-stackstorm@0.1.2 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/plugin-todo@0.2.20 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-apache-airflow@0.2.11 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-catalog-import@0.9.8 + - @backstage/plugin-linguist-common@0.1.0 + - @backstage/plugin-newrelic-dashboard@0.2.11 + - @backstage/plugin-permission-react@0.4.12 + - @backstage/plugin-search-common@1.2.3 + - @internal/plugin-catalog-customized@0.0.10 + ## 0.2.83-next.2 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index 56ae2e9c9e..c2330244d0 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.83-next.2", + "version": "0.2.83", "private": true, "backstage": { "role": "frontend" diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index 00e7582ad3..dcb0e722c0 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/backend-app-api +## 0.4.3 + +### Patch Changes + +- cf13b482f9e: Switch `configServiceFactory` to use `ConfigSources` from `@backstage/config-loader` to load config. +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config-loader@1.3.0 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.4.3-next.1 ### Patch Changes diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index a21484ff2e..dc5b38daae 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-app-api", "description": "Core API used by Backstage backend apps", - "version": "0.4.3-next.1", + "version": "0.4.3", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index fc6d99cf93..cdf7f6259d 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/backend-common +## 0.18.5 + +### Patch Changes + +- 0297f7a54af: Remove the direct dependency on deprecated "request" library +- 284db225083: Updated the `DatabaseManager` to include the plugin id in the Postgres application name of the database connections created for each plugin. +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- 42d817e76ab: Added `HostDiscovery` to supersede deprecated `SingleHostDiscovery` (deprecated due to name) +- Updated dependencies + - @backstage/config-loader@1.3.0 + - @backstage/integration@1.4.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/backend-app-api@0.4.3 + - @backstage/backend-dev-utils@0.1.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.18.5-next.1 ### Patch Changes diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index f8175bac29..914400368a 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-common", "description": "Common functionality library for Backstage backends", - "version": "0.18.5-next.1", + "version": "0.18.5", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index 52043b4ecf..49d5a8bf1f 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/backend-defaults +## 0.1.10 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-app-api@0.4.3 + - @backstage/backend-plugin-api@0.5.2 + ## 0.1.10-next.1 ### Patch Changes diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index d99e462efa..09b5b82dfc 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-defaults", "description": "Backend defaults used by Backstage backend apps", - "version": "0.1.10-next.1", + "version": "0.1.10", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index e01a00f8d2..8253a108b9 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,27 @@ # example-backend-next +## 0.0.11 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/plugin-kubernetes-backend@0.11.0 + - @backstage/plugin-todo-backend@0.1.42 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-search-backend@1.3.1 + - @backstage/backend-defaults@0.1.10 + - @backstage/plugin-app-backend@0.3.45 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-search-backend-module-catalog@0.1.1 + - @backstage/plugin-search-backend-module-explore@0.1.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.1 + - @backstage/plugin-techdocs-backend@1.6.2 + - @backstage/plugin-permission-backend@0.5.20 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/plugin-permission-common@0.7.5 + ## 0.0.11-next.2 ### Patch Changes diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index f69435a838..a50df741ec 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.11-next.2", + "version": "0.0.11", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend-openapi-utils/CHANGELOG.md b/packages/backend-openapi-utils/CHANGELOG.md index 2d3d5f021d..0255bbbf73 100644 --- a/packages/backend-openapi-utils/CHANGELOG.md +++ b/packages/backend-openapi-utils/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/backend-openapi-utils +## 0.0.2 + +### Patch Changes + +- fe16bd39e83: Use permalinks for links including a line number reference +- 27956d78671: Adjusted README accordingly after the generated output now has a `.generated.ts` extension +- 021cfbb5152: Corrected resolution of parameter nested schema to use central schemas. +- 799c33047ed: Updated README to reflect changes in `@backstage/repo-tools`. + ## 0.0.2-next.1 ### Patch Changes diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index b3926de712..89a4621a49 100644 --- a/packages/backend-openapi-utils/package.json +++ b/packages/backend-openapi-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-openapi-utils", "description": "OpenAPI typescript support.", - "version": "0.0.2-next.1", + "version": "0.0.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index 9a28b1dd3a..cf22e7a9c3 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/backend-plugin-api +## 0.5.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + ## 0.5.2-next.1 ### Patch Changes diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index 58e103e647..d4c2bef5a2 100644 --- a/packages/backend-plugin-api/package.json +++ b/packages/backend-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-plugin-api", "description": "Core API used by Backstage backend plugins", - "version": "0.5.2-next.1", + "version": "0.5.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index 1ef0203eb1..c7927d1e66 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/backend-tasks +## 0.5.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.5.2-next.1 ### Patch Changes diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index b0f5c3afb3..6a87b91202 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-tasks", "description": "Common distributed task management library for Backstage backends", - "version": "0.5.2-next.1", + "version": "0.5.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index 3ce5006003..7a2ea9c2e6 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/backend-test-utils +## 0.1.37 + +### Patch Changes + +- 63af7f6d53f: Allow specifying custom Docker registry for database tests +- b1eb268bf9d: Added `POSTGRES_11` and `POSTGRES_12` as supported test database IDs. +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-app-api@0.4.3 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + ## 0.1.37-next.1 ### Patch Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index b23d3b411e..5351ade035 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-test-utils", "description": "Test helpers library for Backstage backends", - "version": "0.1.37-next.1", + "version": "0.1.37", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index 7a4031b654..c775d70b2f 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,57 @@ # example-backend +## 0.2.83 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/plugin-devtools-backend@0.1.0 + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/plugin-kubernetes-backend@0.11.0 + - @backstage/plugin-auth-backend@0.18.3 + - @backstage/plugin-badges-backend@0.2.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.0 + - @backstage/integration@1.4.5 + - @backstage/plugin-todo-backend@0.1.42 + - @backstage/plugin-jenkins-backend@0.2.0 + - @backstage/plugin-azure-sites-backend@0.1.7 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-search-backend@1.3.1 + - example-app@0.2.83 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-app-backend@0.3.45 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/plugin-entity-feedback-backend@0.1.3 + - @backstage/plugin-events-backend@0.2.6 + - @backstage/plugin-playlist-backend@0.3.1 + - @backstage/plugin-rollbar-backend@0.1.42 + - @backstage/plugin-search-backend-module-pg@0.5.6 + - @backstage/plugin-tech-insights-backend@0.5.11 + - @backstage/plugin-techdocs-backend@1.6.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.14 + - @backstage/plugin-adr-backend@0.3.3 + - @backstage/plugin-azure-devops-backend@0.3.24 + - @backstage/plugin-code-coverage-backend@0.2.11 + - @backstage/plugin-explore-backend@0.0.7 + - @backstage/plugin-graphql-backend@0.1.35 + - @backstage/plugin-kafka-backend@0.2.38 + - @backstage/plugin-lighthouse-backend@0.2.1 + - @backstage/plugin-linguist-backend@0.2.2 + - @backstage/plugin-permission-backend@0.5.20 + - @backstage/plugin-proxy-backend@0.2.39 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.29 + - @backstage/plugin-tech-insights-node@0.4.3 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-events-node@0.2.6 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + ## 0.2.83-next.2 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index b5a82fd611..7d6c1011e4 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.83-next.2", + "version": "0.2.83", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index a8c7207650..b91dad32b7 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/cli +## 0.22.7 + +### Patch Changes + +- 473db605a4f: Enable strict config checking during `backstage-cli config:check` with the new `--strict` option which will surface schema errors. +- d548886872d: Deprecated the use of React 16 +- Updated dependencies + - @backstage/config-loader@1.3.0 + - @backstage/cli-common@0.1.12 + - @backstage/cli-node@0.1.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/eslint-plugin@0.1.3 + - @backstage/release-manifests@0.0.9 + - @backstage/types@1.0.2 + ## 0.22.7-next.0 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 9de7b3dbb2..28c5ce7030 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli", "description": "CLI for developing Backstage plugins and apps", - "version": "0.22.7-next.0", + "version": "0.22.7", "publishConfig": { "access": "public" }, diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md index 9b2d34f957..05e4398bc8 100644 --- a/packages/config-loader/CHANGELOG.md +++ b/packages/config-loader/CHANGELOG.md @@ -1,5 +1,56 @@ # @backstage/config-loader +## 1.3.0 + +### Minor Changes + +- 201206132da: Introduced a new config source system to replace `loadConfig`. There is a new `ConfigSource` interface along with utilities provided by `ConfigSources`, as well as a number of built-in configuration source implementations. The new system is more flexible and makes it easier to create new and reusable sources of configuration, such as loading configuration from secret providers. + + The following is an example of how to load configuration using the default behavior: + + ```ts + const source = ConfigSources.default({ + argv: options?.argv, + remote: options?.remote, + }); + const config = await ConfigSources.toConfig(source); + ``` + + The `ConfigSource` interface looks like this: + + ```ts + export interface ConfigSource { + readConfigData(options?: ReadConfigDataOptions): AsyncConfigSourceIterator; + } + ``` + + It is best implemented using an async iterator: + + ```ts + class MyConfigSource implements ConfigSource { + async *readConfigData() { + yield { + config: [ + { + context: 'example', + data: { backend: { baseUrl: 'http://localhost' } }, + }, + ], + }; + } + } + ``` + +### Patch Changes + +- 7c116bcac7f: Fixed the way that some request errors are thrown +- 473db605a4f: Added a new `noUndeclaredProperties` option to `SchemaLoader` to support enforcing that there are no extra keys when verifying config. +- Updated dependencies + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 1.3.0-next.0 ### Minor Changes diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 0aa071c206..d453b40201 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/config-loader", "description": "Config loading functionality used by Backstage backend, and CLI", - "version": "1.3.0-next.0", + "version": "1.3.0", "publishConfig": { "access": "public", "main": "dist/index.cjs.js", diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index f4179e6fb6..f6df0da032 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/core-app-api +## 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 diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index 5d99754068..4416fa99e1 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-app-api", "description": "Core app API used by Backstage apps", - "version": "1.8.0-next.1", + "version": "1.8.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index 90f4e174b0..8ace83e62b 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/core-components +## 0.13.1 + +### Patch Changes + +- 83b45f9df50: Fix accessibility issue with Backstage Table's header style +- e97769f7c0b: Fix accessibility issue on controlled select input on tab navigation + keyboard enter/space action. +- b1f13cb38aa: Fix accessibility issue with Edit Metadata Link on screen readers missing notice about opening in a new tab. +- 26cff1a5dfb: Start capturing sidebar click events in analytics by default. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/version-bridge@1.0.4 + ## 0.13.1-next.1 ### Patch Changes diff --git a/packages/core-components/package.json b/packages/core-components/package.json index ec46c4c6e3..872808622f 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-components", "description": "Core components used by Backstage plugins and apps", - "version": "0.13.1-next.1", + "version": "0.13.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index 16d93b1867..c1b613ed28 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/create-app +## 0.5.1 + +### Patch Changes + +- 1d5e42655cd: Correct command to create new plugins +- e04bb20bdc4: Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.12 + ## 0.5.1-next.2 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 841c1b401d..ff9fdd6623 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/create-app", "description": "A CLI that helps you create your own Backstage app", - "version": "0.5.1-next.2", + "version": "0.5.1", "publishConfig": { "access": "public" }, diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 77e5241e7e..6e88b8d085 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/dev-utils +## 1.0.15 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/app-defaults@1.3.1 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-app-api@1.8.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/test-utils@1.3.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 1.0.15-next.2 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index c14732070f..3ca693d906 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/dev-utils", "description": "Utilities for developing Backstage plugins.", - "version": "1.0.15-next.2", + "version": "1.0.15", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md index eaec405ec9..7186431398 100644 --- a/packages/e2e-test/CHANGELOG.md +++ b/packages/e2e-test/CHANGELOG.md @@ -1,5 +1,14 @@ # e2e-test +## 0.2.3 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.1 + - @backstage/cli-common@0.1.12 + - @backstage/errors@1.1.5 + ## 0.2.3-next.2 ### Patch Changes diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index 60877e8d66..011a9e876d 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -1,7 +1,7 @@ { "name": "e2e-test", "description": "E2E test for verifying Backstage packages", - "version": "0.2.3-next.2", + "version": "0.2.3", "private": true, "backstage": { "role": "cli" diff --git a/packages/integration-aws-node/CHANGELOG.md b/packages/integration-aws-node/CHANGELOG.md index 40192bdfaf..181b08c4ee 100644 --- a/packages/integration-aws-node/CHANGELOG.md +++ b/packages/integration-aws-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/integration-aws-node +## 0.1.3 + +### Patch Changes + +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.1.2 ### Patch Changes diff --git a/packages/integration-aws-node/package.json b/packages/integration-aws-node/package.json index 30a95b549e..8eec21a143 100644 --- a/packages/integration-aws-node/package.json +++ b/packages/integration-aws-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-aws-node", "description": "Helpers for fetching AWS account credentials", - "version": "0.1.2", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index f9c035b7a6..b1bfe3e73f 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/integration-react +## 1.1.13 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + ## 1.1.13-next.2 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index 3124557ebc..929faae601 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-react", "description": "Frontend package for managing integrations towards external systems", - "version": "1.1.13-next.2", + "version": "1.1.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index 92eff86bb5..7dcef4fbc9 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/integration +## 1.4.5 + +### Patch Changes + +- b026275bcc8: Fixed a bug where the wrong credentials would be selected when using multiple GitHub app integrations. +- Updated dependencies + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 1.4.5-next.0 ### Patch Changes diff --git a/packages/integration/package.json b/packages/integration/package.json index fbe8ac1fc3..14b64b3089 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration", "description": "Helpers for managing integrations towards external systems", - "version": "1.4.5-next.0", + "version": "1.4.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md index e31c05532c..7f1ece48d4 100644 --- a/packages/repo-tools/CHANGELOG.md +++ b/packages/repo-tools/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/repo-tools +## 0.3.0 + +### Minor Changes + +- 799c33047ed: **BREAKING**: The OpenAPI commands are now found within the `schema openapi` sub-command. For example `yarn backstage-repo-tools schema:openapi:verify` is now `yarn backstage-repo-tools schema openapi verify`. +- 27956d78671: Generated OpenAPI files now have a `.generated.ts` file name and a warning header at the top, to highlight that they should not be edited by hand. + +### Patch Changes + +- Updated dependencies + - @backstage/cli-common@0.1.12 + - @backstage/cli-node@0.1.0 + - @backstage/errors@1.1.5 + ## 0.3.0-next.0 ### Minor Changes diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 74c39fc9a8..85f683a999 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/repo-tools", "description": "CLI for Backstage repo tooling ", - "version": "0.3.0-next.0", + "version": "0.3.0", "publishConfig": { "access": "public" }, diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index 3e7e890e7c..6886f89c11 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,24 @@ # techdocs-cli-embedded-app +## 0.2.82 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-techdocs@1.6.2 + - @backstage/app-defaults@1.3.1 + - @backstage/cli@0.22.7 + - @backstage/plugin-catalog@1.11.0 + - @backstage/core-app-api@1.8.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/test-utils@1.3.1 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + ## 0.2.82-next.2 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index a645d2dac1..fb3715325b 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,6 +1,6 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.82-next.2", + "version": "0.2.82", "private": true, "backstage": { "role": "frontend" diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index 35f3b4bc28..ce88475c7f 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,16 @@ # @techdocs/cli +## 1.4.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-techdocs-node@1.7.1 + - @backstage/catalog-model@1.3.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + ## 1.4.2-next.1 ### Patch Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 8b533b4453..e61401e8ce 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -1,7 +1,7 @@ { "name": "@techdocs/cli", "description": "Utility CLI for managing TechDocs sites in Backstage.", - "version": "1.4.2-next.1", + "version": "1.4.2", "publishConfig": { "access": "public" }, diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index 6804a09762..4bebf94052 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/test-utils +## 1.3.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-app-api@1.8.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-permission-react@0.4.12 + ## 1.3.1-next.2 ### Patch Changes diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index fa2557c4de..3024b25c05 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/test-utils", "description": "Utilities to test Backstage plugins and apps.", - "version": "1.3.1-next.2", + "version": "1.3.1", "publishConfig": { "access": "public" }, diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md index 1e676394b5..0f8b4819b7 100644 --- a/packages/theme/CHANGELOG.md +++ b/packages/theme/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/theme +## 0.3.0 + +### Minor Changes + +- 98c0c199b15: Updates light theme's primary foreground and `running` status indicator colours to meet WCAG. Previously #2E77D0 changed to #1F5493. + +### Patch Changes + +- 83b45f9df50: Fix accessibility issue with Backstage Table's header style + ## 0.3.0-next.0 ### Minor Changes diff --git a/packages/theme/package.json b/packages/theme/package.json index f0e26f5739..fbc767fb2f 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/theme", "description": "material-ui theme for use with Backstage.", - "version": "0.3.0-next.0", + "version": "0.3.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index 39e8bf7e4c..dd7823c048 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-adr-backend +## 0.3.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-adr-common@0.2.9 + - @backstage/plugin-search-common@1.2.3 + ## 0.3.3-next.1 ### Patch Changes diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index a1f6a859a0..a926239ba7 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr-backend", - "version": "0.3.3-next.1", + "version": "0.3.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/adr-common/CHANGELOG.md b/plugins/adr-common/CHANGELOG.md index c3b8806c80..9fddae2588 100644 --- a/plugins/adr-common/CHANGELOG.md +++ b/plugins/adr-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-adr-common +## 0.2.9 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.4.5 + - @backstage/catalog-model@1.3.0 + - @backstage/plugin-search-common@1.2.3 + ## 0.2.9-next.0 ### Patch Changes diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json index 0fdf94003a..adbb6bea58 100644 --- a/plugins/adr-common/package.json +++ b/plugins/adr-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-adr-common", "description": "Common functionalities for the adr plugin", - "version": "0.2.9-next.0", + "version": "0.2.9", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md index ce583e56d2..b96e66e9d3 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-adr +## 0.6.0 + +### Minor Changes + +- b12cd5dc221: render SupportButton only if config is set + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-adr-common@0.2.9 + - @backstage/plugin-search-common@1.2.3 + ## 0.5.1-next.2 ### Patch Changes diff --git a/plugins/adr/package.json b/plugins/adr/package.json index 707f0396cf..cac6b89fcc 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr", - "version": "0.5.1-next.2", + "version": "0.6.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md index 8407f5822e..15c10734de 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-airbrake-backend +## 0.2.18 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + ## 0.2.18-next.1 ### Patch Changes diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index c57ffa8be9..eaec28f797 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake-backend", - "version": "0.2.18-next.1", + "version": "0.2.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md index 15472a973a..854e9be255 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-airbrake +## 0.3.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/dev-utils@1.0.15 + - @backstage/test-utils@1.3.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.3.18-next.2 ### Patch Changes diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 3934c29680..6933bad355 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.3.18-next.2", + "version": "0.3.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index e656638fd6..e89f981487 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-allure +## 0.1.34 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.34-next.2 ### Patch Changes diff --git a/plugins/allure/package.json b/plugins/allure/package.json index d8fb27f36c..e2f6c7241a 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-allure", "description": "A Backstage plugin that integrates with Allure", - "version": "0.1.34-next.2", + "version": "0.1.34", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index ec3122845a..fc0a434a5e 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-analytics-module-ga +## 0.1.29 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.29-next.1 ### Patch Changes diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 2b2542ec2d..8062c304fa 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga", - "version": "0.1.29-next.1", + "version": "0.1.29", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga4/CHANGELOG.md b/plugins/analytics-module-ga4/CHANGELOG.md index 15e67dd797..c69204bcc0 100644 --- a/plugins/analytics-module-ga4/CHANGELOG.md +++ b/plugins/analytics-module-ga4/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-analytics-module-ga4 +## 0.1.0 + +### Minor Changes + +- 22b46f7f562: Plugin provides Backstage Analytics API for Google Analytics 4. Once installed and configured, analytics events will be sent to GA4 as your users navigate and use your Backstage instance + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.0-next.2 ### Patch Changes diff --git a/plugins/analytics-module-ga4/package.json b/plugins/analytics-module-ga4/package.json index eee914df92..dba9d0c8f4 100644 --- a/plugins/analytics-module-ga4/package.json +++ b/plugins/analytics-module-ga4/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga4", - "version": "0.1.0-next.2", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 612a2a3e1d..f9f6958a87 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-apache-airflow +## 0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + ## 0.2.11-next.1 ### Patch Changes diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index cf7cf9553c..4ad427a972 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apache-airflow", - "version": "0.2.11-next.1", + "version": "0.2.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index f370ab46ee..2455e7809c 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-api-docs +## 0.9.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-catalog@1.11.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.9.3-next.2 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index e31e2ec48e..651a606d9c 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-api-docs", "description": "A Backstage plugin that helps represent API entities in the frontend", - "version": "0.9.3-next.2", + "version": "0.9.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md index 38d322a270..9efa02cea9 100644 --- a/plugins/apollo-explorer/CHANGELOG.md +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-apollo-explorer +## 0.1.11 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.11-next.1 ### Patch Changes diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index 5117fa632c..b28293777d 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apollo-explorer", - "version": "0.1.11-next.1", + "version": "0.1.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index 1e98f25c64..d89ba0a4ec 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-app-backend +## 0.3.45 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config-loader@1.3.0 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + ## 0.3.45-next.1 ### Patch Changes diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 85602a06e4..9a471f0021 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-app-backend", "description": "A Backstage backend plugin that serves the Backstage frontend app", - "version": "0.3.45-next.1", + "version": "0.3.45", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index 406298f6d2..551872232d 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-auth-backend +## 0.18.3 + +### Patch Changes + +- 7c116bcac7f: Fixed the way that some request errors are thrown +- 473db605a4f: Fix config schema definition. +- 3ffcdac7d07: Added a persistent session store through the database +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.18.3-next.2 ### Patch Changes diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index fbaf3c5423..fb53d9b17f 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend", "description": "A Backstage backend plugin that handles authentication", - "version": "0.18.3-next.2", + "version": "0.18.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md index 7cb9f4cc64..e299198f8f 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-node +## 0.2.14 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.2.14-next.1 ### Patch Changes diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 1d8e71a4c0..25bcda593a 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.2.14-next.1", + "version": "0.2.14", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index 3dd206ae66..232347e752 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-azure-devops-backend +## 0.3.24 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/plugin-azure-devops-common@0.3.0 + ## 0.3.24-next.1 ### Patch Changes diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index f28bfa5cb4..2a0f3b76a5 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops-backend", - "version": "0.3.24-next.1", + "version": "0.3.24", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index 608f88437c..20bbec23b4 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-azure-devops +## 0.3.0 + +### Minor Changes + +- 877df261085: The getBuildRuns function now checks contains multiple comma-separated builds and splits them to send multiple requests for each and concatenates the results. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-azure-devops-common@0.3.0 + ## 0.3.0-next.2 ### Minor Changes diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index 8b3f4a8496..99122b62db 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops", - "version": "0.3.0-next.2", + "version": "0.3.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites-backend/CHANGELOG.md b/plugins/azure-sites-backend/CHANGELOG.md index 9c25a70214..d8b123dec1 100644 --- a/plugins/azure-sites-backend/CHANGELOG.md +++ b/plugins/azure-sites-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-azure-sites-backend +## 0.1.7 + +### Patch Changes + +- d66d4f916aa: Updated URL to `/health` and corrected typos in the `README.md` +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/plugin-azure-sites-common@0.1.0 + ## 0.1.7-next.1 ### Patch Changes diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json index a58459d2aa..61c23a4b0f 100644 --- a/plugins/azure-sites-backend/package.json +++ b/plugins/azure-sites-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites-backend", - "version": "0.1.7-next.1", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md index 20703e33a5..bc7184c9ca 100644 --- a/plugins/azure-sites/CHANGELOG.md +++ b/plugins/azure-sites/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-azure-sites +## 0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-azure-sites-common@0.1.0 + ## 0.1.7-next.2 ### Patch Changes diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json index c3335d6129..44775bcab4 100644 --- a/plugins/azure-sites/package.json +++ b/plugins/azure-sites/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites", - "version": "0.1.7-next.2", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index c543efb0a6..e15a74e3de 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-badges-backend +## 0.2.0 + +### Minor Changes + +- a0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges. + + Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version. + + **BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options. + +### Patch Changes + +- 0cd552c28d8: Removed some unused dependencies +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.2.0-next.2 ### Minor Changes diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 84b4d324d7..f2db6ef5c5 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges-backend", "description": "A Backstage backend plugin that generates README badges for your entities", - "version": "0.2.0-next.2", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index a05ef8405d..1ec81cb321 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-badges +## 0.2.42 + +### Patch Changes + +- a0108c49774: Fixing badges-backend plugin to get a token from the TokenManager instead of parsing the request header. Hence, it's now possible to disable the authMiddleware for the badges-backend plugin to expose publicly the badges. + + Implementing an obfuscation feature to protect an open badges endpoint from being enumerated. The feature is disabled by default and the change is compatible with the previous version. + + **BREAKING**: `createRouter` now require that `tokenManager`, `logger`, and `identityApi`, are passed in as options. + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.2.42-next.2 ### Patch Changes diff --git a/plugins/badges/package.json b/plugins/badges/package.json index be2f7adc79..fcfb55c386 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges", "description": "A Backstage plugin that generates README badges for your entities", - "version": "0.2.42-next.2", + "version": "0.2.42", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md index 11d820a334..da83be709c 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-bazaar-backend +## 0.2.8 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.2.8-next.1 ### Patch Changes diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 60e549655e..9dd25233c6 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar-backend", - "version": "0.2.8-next.1", + "version": "0.2.8", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md index 8f7de5e0f2..4b1a86deb9 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-bazaar +## 0.2.8 + +### Patch Changes + +- 900880ab7c3: Fixed `validateDOMNesting` warnings +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/cli@0.22.7 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-catalog@1.11.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.2.8-next.2 ### Patch Changes diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 5e8bb28df6..d8d334b426 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.2.8-next.2", + "version": "0.2.8", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bitbucket-cloud-common/CHANGELOG.md b/plugins/bitbucket-cloud-common/CHANGELOG.md index c3c31ed392..04b2cc787b 100644 --- a/plugins/bitbucket-cloud-common/CHANGELOG.md +++ b/plugins/bitbucket-cloud-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-bitbucket-cloud-common +## 0.2.6 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.4.5 + ## 0.2.6-next.0 ### Patch Changes diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json index 7bf2c5791e..a63b9588fb 100644 --- a/plugins/bitbucket-cloud-common/package.json +++ b/plugins/bitbucket-cloud-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitbucket-cloud-common", "description": "Common functionalities for bitbucket-cloud plugins", - "version": "0.2.6-next.0", + "version": "0.2.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md index 2fba6da9b3..069fc0ca6e 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-bitrise +## 0.1.45 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.45-next.2 ### Patch Changes diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 1c1c3523ea..fe62603226 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitrise", "description": "A Backstage plugin that integrates towards Bitrise", - "version": "0.1.45-next.2", + "version": "0.1.45", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index 886703f0c8..029ab14592 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.2.0 + +### Minor Changes + +- 1a3b5f1e390: **BREAKING**: AwsOrganizationCloudAccountProcessor.fromConfig now returns a promise instead of the instance directly. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/plugin-kubernetes-common@0.6.3 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + ## 0.1.19-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 50d7349cef..a5e0aad55b 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-aws", "description": "A Backstage catalog backend module that helps integrate towards AWS", - "version": "0.1.19-next.2", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index e8458d82e7..21b95b5861 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.1.16 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + ## 0.1.16-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index 2e2ff96e7e..e9d6803571 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-azure", "description": "A Backstage catalog backend module that helps integrate towards Azure", - "version": "0.1.16-next.1", + "version": "0.1.16", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index af6e6c3a7f..94c83e6b2e 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.1.12 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-bitbucket-cloud-common@0.2.6 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-events-node@0.2.6 + ## 0.1.12-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index 77df5b12b4..00e4269342 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud", - "version": "0.1.12-next.1", + "version": "0.1.12", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md index 3c9e51b08e..ae894c2e12 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-bitbucket-server +## 0.1.10 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.1.10-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index 68960fbf81..3dc8aca390 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-server", - "version": "0.1.10-next.1", + "version": "0.1.10", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md index 0193d551a5..b7a9f2d0a2 100644 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-bitbucket +## 0.2.12 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-bitbucket-cloud-common@0.2.6 + ## 0.2.12-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index 64269a9102..1dbbb4bb45 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/catalog-backend-module-bitbucket/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket", - "version": "0.2.12-next.1", + "version": "0.2.12", "deprecated": true, "main": "src/index.ts", "types": "src/index.ts", diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index ea3d4af960..8f94db98f3 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.1.13 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.1.13-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index 22bc3a95e5..a69aac5034 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gerrit", - "version": "0.1.13-next.1", + "version": "0.1.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index 9e3b24071f..427b48e7bb 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-catalog-backend-module-github +## 0.3.0 + +### Minor Changes + +- 970678adbe2: Implement events support for `GithubMultiOrgEntityProvider` + + **BREAKING:** Passing in a custom `teamTransformer` will now correctly completely override the default transformer behavior + +### Patch Changes + +- 78bb674a713: Fixed bug in queryWithPaging that caused secondary rate limit errors in GitHub with organizations having more than 1000 repositories. This change makes one request per second to avoid concurrency issues. +- bd101cefd37: Updated the `team.edited` event emitted from `GithubOrgEntityProvider` to also include teams description. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-events-node@0.2.6 + ## 0.3.0-next.2 ### Minor Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index 1f79fea531..029acdf0e0 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-github", "description": "A Backstage catalog backend module that helps integrate towards GitHub", - "version": "0.3.0-next.2", + "version": "0.3.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md index 9882178a2b..a8c58d386a 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-gitlab +## 0.2.1 + +### Patch Changes + +- b12c41fafc4: Fix a corner case where returned users are null for bots +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.2.1-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index 22237862aa..223d578da1 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab", "description": "A Backstage catalog backend module that helps integrate towards GitLab", - "version": "0.2.1-next.1", + "version": "0.2.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md index 8c7b041d06..fdf0de5b0b 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md +++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-incremental-ingestion +## 0.3.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-events-node@0.2.6 + - @backstage/plugin-permission-common@0.7.5 + ## 0.3.2-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index 69bc2dfbd6..b37f2bfb6c 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/package.json +++ b/plugins/catalog-backend-module-incremental-ingestion/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-incremental-ingestion", "description": "An entity provider for streaming large asset sources into the catalog", - "version": "0.3.2-next.2", + "version": "0.3.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md index 104e3f1c0f..052f1cc473 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.5.12 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + ## 0.5.12-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 120131d95a..6943df23fe 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-ldap", "description": "A Backstage catalog backend module that helps integrate towards LDAP", - "version": "0.5.12-next.1", + "version": "0.5.12", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md index c0c0888f38..f45e0c3440 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.5.4 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-common@1.0.13 + ## 0.5.4-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 026386457a..ae836681b4 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-msgraph", "description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph", - "version": "0.5.4-next.1", + "version": "0.5.4", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md index 345032bda7..0598ea46ef 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.1.11 + +### Patch Changes + +- accaceadffa: Fixed bug in `jsonSchemaRefPlaceholderResolver` where relative $ref files were resolved through file system instead of base URL of file +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + ## 0.1.11-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index c9960d15f1..980a8920cd 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-openapi", "description": "A Backstage catalog backend module that helps with OpenAPI specifications", - "version": "0.1.11-next.2", + "version": "0.1.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md index b5f13f39cd..e8750bc1c4 100644 --- a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md +++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog-backend-module-puppetdb +## 0.1.2 + +### Patch Changes + +- 95b2168d71b: Fixes import paths and updates documentation +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.1.2-next.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 3d1734657b..7286f66095 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-puppetdb", "description": "A Backstage catalog backend module that helps integrate towards PuppetDB", - "version": "0.1.2-next.2", + "version": "0.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index 78021149ff..e8c18be461 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/plugin-catalog-backend +## 1.9.1 + +### Patch Changes + +- ce8d203235b: Ensure that entity cache state is only written to the database when actually changed +- 485a6c5f7b5: Internal refactoring for performance in the service handlers +- 3587a968dcd: Fixed a bug in the `queryEntities` endpoint that was causing filtered entities to be included in cursor requests. +- ce335df9d1c: Improve the query for orphan pruning +- 27956d78671: Adjusted the OpenAPI schema file name according to the new structure +- 51064e6e5ee: Change orphan cleanup task to only log a message if it deleted entities. +- 12a345317ab: Remove unnecessary join in the entity facets endpoint, exclude nulls +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/plugin-search-backend-module-catalog@0.1.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + ## 1.9.1-next.2 ### Patch Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 13f358f1ff..1a2ca55253 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend", "description": "The Backstage backend plugin that provides the Backstage catalog", - "version": "1.9.1-next.2", + "version": "1.9.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md index 0f8d9dccb1..00d769e71e 100644 --- a/plugins/catalog-customized/CHANGELOG.md +++ b/plugins/catalog-customized/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/plugin-catalog-customized +## 0.0.10 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-catalog@1.11.0 + ## 0.0.10-next.2 ### Patch Changes diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json index f7a6b0b80f..12f9bc584f 100644 --- a/plugins/catalog-customized/package.json +++ b/plugins/catalog-customized/package.json @@ -1,7 +1,7 @@ { "name": "@internal/plugin-catalog-customized", "description": "The internal Backstage Customizable plugin for browsing the Backstage catalog", - "version": "0.0.10-next.2", + "version": "0.0.10", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index 00c907899a..277f0a70cf 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-graph +## 0.2.30 + +### Patch Changes + +- d446f8fb0a8: Expose all `EntityRelationsGraphProps` to Catalog Graph Page +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.2.30-next.2 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index bd9508783d..fd4d3d0114 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-graph", - "version": "0.2.30-next.2", + "version": "0.2.30", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index 38ae6fbed8..50dee98951 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-import +## 0.9.8 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-common@1.0.13 + ## 0.9.8-next.2 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 5fb8bb1b5b..a6cad7a986 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-import", "description": "A Backstage plugin the helps you import entities into your catalog", - "version": "0.9.8-next.2", + "version": "0.9.8", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md index a1ca2c37c6..5ed8a9aba1 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-node +## 1.3.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + ## 1.3.6-next.1 ### Patch Changes diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 95136c2da1..7adf03eed2 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-node", "description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend", - "version": "1.3.6-next.1", + "version": "1.3.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index 79ade18d8f..7d96283320 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,46 @@ # @backstage/plugin-catalog-react +## 1.6.0 + +### Minor Changes + +- 2258dcae970: Added an entity namespace filter and column on the default catalog page. + + If you have a custom version of the catalog page, you can add this filter in your CatalogPage code: + + ```ts + + + + + + /* if you want namespace picker */ + + + + + + + ``` + + The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-permission-react@0.4.12 + ## 1.6.0-next.2 ### Patch Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index d5808553cb..569e9d5d8a 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-react", "description": "A frontend library that helps other Backstage plugins interact with the catalog", - "version": "1.6.0-next.2", + "version": "1.6.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index 8300e81422..41fdf9aad7 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,46 @@ # @backstage/plugin-catalog +## 1.11.0 + +### Minor Changes + +- 2258dcae970: Added an entity namespace filter and column on the default catalog page. + + If you have a custom version of the catalog page, you can add this filter in your CatalogPage code: + + ```ts + + + + + + /* if you want namespace picker */ + + + + + + + ``` + + The namespace column can be added using `createNamespaceColumn();`. This is only needed if you customized the columns for CatalogTable. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-search-common@1.2.3 + ## 1.11.0-next.2 ### Patch Changes diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 2a0cfb4625..21983f762e 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog", "description": "The Backstage plugin for browsing the Backstage catalog", - "version": "1.11.0-next.2", + "version": "1.11.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index 93b77f90f8..fed7193859 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-cicd-statistics-module-gitlab +## 0.1.14 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-cicd-statistics@0.1.20 + ## 0.1.14-next.2 ### Patch Changes diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index 37bf35a907..ac719e1c1b 100644 --- a/plugins/cicd-statistics-module-gitlab/package.json +++ b/plugins/cicd-statistics-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics-module-gitlab", "description": "CI/CD Statistics plugin module; Gitlab CICD", - "version": "0.1.14-next.2", + "version": "0.1.14", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index a321674f8d..b1b539c55e 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-cicd-statistics +## 0.1.20 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.20-next.2 ### Patch Changes diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index dce541c0b8..1eaebdf236 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics", "description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)", - "version": "0.1.20-next.2", + "version": "0.1.20", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md index afa6a83d48..b2947ce517 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-circleci +## 0.3.18 + +### Patch Changes + +- 451b3cadb3d: Fixes row display for in progress jobs to not display trailing "took" +- 1c4958d905f: Hide empty time field data for queued builds which haven't started yet +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.3.18-next.2 ### Patch Changes diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 4108700972..87620319b2 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-circleci", "description": "A Backstage plugin that integrates towards Circle CI", - "version": "0.3.18-next.2", + "version": "0.3.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index 048c6b73ca..3eb8b09596 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-cloudbuild +## 0.3.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.3.18-next.2 ### Patch Changes diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index ef57f77fde..231e6c319c 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cloudbuild", "description": "A Backstage plugin that integrates towards Google Cloud Build", - "version": "0.3.18-next.2", + "version": "0.3.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md index c31c3ca3f3..1b732c2154 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-code-climate +## 0.1.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.18-next.2 ### Patch Changes diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index f650739510..b2da33c3f6 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-code-climate", - "version": "0.1.18-next.2", + "version": "0.1.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index a63405bd75..10acc2a11a 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-code-coverage-backend +## 0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.2.11-next.1 ### Patch Changes diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 549e0a1b2c..4444287b23 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage-backend", "description": "A Backstage backend plugin that helps you keep track of your code coverage", - "version": "0.2.11-next.1", + "version": "0.2.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md index e1ac2d6b77..b514b137a1 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-code-coverage +## 0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.2.11-next.2 ### Patch Changes diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 7e40175240..bb6fb411d5 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage", "description": "A Backstage plugin that helps you keep track of your code coverage", - "version": "0.2.11-next.2", + "version": "0.2.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md index 4483bc8351..242d8f6a4a 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-codescene +## 0.1.13 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.1.13-next.1 ### Patch Changes diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 05f2d8cde1..13d5662812 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.13-next.1", + "version": "0.1.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index 71c47d650c..059a476aed 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-config-schema +## 0.1.41 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.1.41-next.1 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index bf8bfc2d9d..3f1488178e 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-config-schema", "description": "A Backstage plugin that lets you browse the configuration schema of your app", - "version": "0.1.41-next.1", + "version": "0.1.41", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index b9a289e963..63ac24c646 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-cost-insights +## 0.12.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-cost-insights-common@0.1.1 + ## 0.12.7-next.2 ### Patch Changes diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 62295bf737..8607bff31e 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cost-insights", "description": "A Backstage plugin that helps you keep track of your cloud spend", - "version": "0.12.7-next.2", + "version": "0.12.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md index 6fefbd1524..45f9f7174d 100644 --- a/plugins/devtools-backend/CHANGELOG.md +++ b/plugins/devtools-backend/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-devtools-backend +## 0.1.0 + +### Minor Changes + +- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details! + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-devtools-common@0.1.0 + - @backstage/backend-common@0.18.5 + - @backstage/config-loader@1.3.0 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + ## 0.1.0-next.0 ### Minor Changes diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index 7235f1293a..77eaf43901 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools-backend", - "version": "0.1.0-next.0", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools-common/CHANGELOG.md b/plugins/devtools-common/CHANGELOG.md index 79c40a24c1..6a566d0a67 100644 --- a/plugins/devtools-common/CHANGELOG.md +++ b/plugins/devtools-common/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-devtools-common +## 0.1.0 + +### Minor Changes + +- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details! + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + ## 0.1.0-next.0 ### Minor Changes diff --git a/plugins/devtools-common/package.json b/plugins/devtools-common/package.json index ba48da49ad..0e114e39b9 100644 --- a/plugins/devtools-common/package.json +++ b/plugins/devtools-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-devtools-common", "description": "Common functionalities for the devtools plugin", - "version": "0.1.0-next.0", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools/CHANGELOG.md b/plugins/devtools/CHANGELOG.md index 0fe41704c6..2e0e2a2de0 100644 --- a/plugins/devtools/CHANGELOG.md +++ b/plugins/devtools/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-devtools +## 0.1.0 + +### Minor Changes + +- 347aeca204c: Introduced the DevTools plugin, checkout the plugin's [`README.md`](https://github.com/backstage/backstage/tree/master/plugins/devtools) for more details! + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-devtools-common@0.1.0 + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-react@0.4.12 + ## 0.1.0-next.0 ### Minor Changes diff --git a/plugins/devtools/package.json b/plugins/devtools/package.json index 5997f79845..d5bd0c567a 100644 --- a/plugins/devtools/package.json +++ b/plugins/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools", - "version": "0.1.0-next.0", + "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md index bfb0eac993..fe0d954772 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-dynatrace +## 5.0.0 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 5.0.0-next.2 ### Patch Changes diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index ab241ec0ad..1546562169 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-dynatrace", - "version": "5.0.0-next.2", + "version": "5.0.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback-backend/CHANGELOG.md b/plugins/entity-feedback-backend/CHANGELOG.md index 2ee2ffb799..82fd67a96c 100644 --- a/plugins/entity-feedback-backend/CHANGELOG.md +++ b/plugins/entity-feedback-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-entity-feedback-backend +## 0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-entity-feedback-common@0.1.1 + ## 0.1.3-next.1 ### Patch Changes diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json index bfda97de8f..ec5a379830 100644 --- a/plugins/entity-feedback-backend/package.json +++ b/plugins/entity-feedback-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback-backend", - "version": "0.1.3-next.1", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback/CHANGELOG.md b/plugins/entity-feedback/CHANGELOG.md index d32012518e..312f6c1fd4 100644 --- a/plugins/entity-feedback/CHANGELOG.md +++ b/plugins/entity-feedback/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-entity-feedback +## 0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-entity-feedback-common@0.1.1 + ## 0.2.1-next.2 ### Patch Changes diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json index 0b90caea9d..90a9f6e4ab 100644 --- a/plugins/entity-feedback/package.json +++ b/plugins/entity-feedback/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback", - "version": "0.2.1-next.2", + "version": "0.2.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-validation/CHANGELOG.md b/plugins/entity-validation/CHANGELOG.md index 6d423d04bf..648e6fc107 100644 --- a/plugins/entity-validation/CHANGELOG.md +++ b/plugins/entity-validation/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-entity-validation +## 0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-common@1.0.13 + ## 0.1.3-next.2 ### Patch Changes diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json index 950687a884..0d375ccca9 100644 --- a/plugins/entity-validation/package.json +++ b/plugins/entity-validation/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-validation", - "version": "0.1.3-next.2", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-aws-sqs/CHANGELOG.md b/plugins/events-backend-module-aws-sqs/CHANGELOG.md index 241463ac5c..4b55725420 100644 --- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md +++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-events-backend-module-aws-sqs +## 0.2.0 + +### Minor Changes + +- 2c5661f3899: Allow endpoint configuration for sqs, enabling use of localstack for testing. + +### Patch Changes + +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-events-node@0.2.6 + ## 0.2.0-next.2 ### Minor Changes diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json index f9b3fd071b..e89ea4413b 100644 --- a/plugins/events-backend-module-aws-sqs/package.json +++ b/plugins/events-backend-module-aws-sqs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-aws-sqs", - "version": "0.2.0-next.2", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-azure/CHANGELOG.md b/plugins/events-backend-module-azure/CHANGELOG.md index b89363b7c3..0e096953a4 100644 --- a/plugins/events-backend-module-azure/CHANGELOG.md +++ b/plugins/events-backend-module-azure/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-azure +## 0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/plugin-events-node@0.2.6 + ## 0.1.7-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json index 3667e73ebd..099da38f40 100644 --- a/plugins/events-backend-module-azure/package.json +++ b/plugins/events-backend-module-azure/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-azure", - "version": "0.1.7-next.1", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md index ea70f7686e..dc861fc027 100644 --- a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-bitbucket-cloud +## 0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/plugin-events-node@0.2.6 + ## 0.1.7-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json index ea04a4faaa..b30f50265b 100644 --- a/plugins/events-backend-module-bitbucket-cloud/package.json +++ b/plugins/events-backend-module-bitbucket-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-bitbucket-cloud", - "version": "0.1.7-next.1", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gerrit/CHANGELOG.md b/plugins/events-backend-module-gerrit/CHANGELOG.md index 411d9ffff8..e0e19a0899 100644 --- a/plugins/events-backend-module-gerrit/CHANGELOG.md +++ b/plugins/events-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-gerrit +## 0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/plugin-events-node@0.2.6 + ## 0.1.7-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json index 64fe31d31f..e18616d98d 100644 --- a/plugins/events-backend-module-gerrit/package.json +++ b/plugins/events-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gerrit", - "version": "0.1.7-next.1", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-github/CHANGELOG.md b/plugins/events-backend-module-github/CHANGELOG.md index 0e2b2ae8de..7f88bb5d13 100644 --- a/plugins/events-backend-module-github/CHANGELOG.md +++ b/plugins/events-backend-module-github/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-events-backend-module-github +## 0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-events-node@0.2.6 + ## 0.1.7-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json index 74b74469ca..0117792b8d 100644 --- a/plugins/events-backend-module-github/package.json +++ b/plugins/events-backend-module-github/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-github", - "version": "0.1.7-next.1", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gitlab/CHANGELOG.md b/plugins/events-backend-module-gitlab/CHANGELOG.md index d8d48674c8..f6827b90f4 100644 --- a/plugins/events-backend-module-gitlab/CHANGELOG.md +++ b/plugins/events-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-events-backend-module-gitlab +## 0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-events-node@0.2.6 + ## 0.1.7-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json index 07102c0b6f..fc33203460 100644 --- a/plugins/events-backend-module-gitlab/package.json +++ b/plugins/events-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gitlab", - "version": "0.1.7-next.1", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-test-utils/CHANGELOG.md b/plugins/events-backend-test-utils/CHANGELOG.md index 3d665a44ce..14d73356e0 100644 --- a/plugins/events-backend-test-utils/CHANGELOG.md +++ b/plugins/events-backend-test-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-backend-test-utils +## 0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.6 + ## 0.1.7-next.1 ### Patch Changes diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json index 3d46ea9210..d3340d5baf 100644 --- a/plugins/events-backend-test-utils/package.json +++ b/plugins/events-backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-backend-test-utils", "description": "The plugin-events-backend-test-utils for @backstage/plugin-events-node", - "version": "0.1.7-next.1", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend/CHANGELOG.md b/plugins/events-backend/CHANGELOG.md index 929a003cf9..25b0561c74 100644 --- a/plugins/events-backend/CHANGELOG.md +++ b/plugins/events-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-events-backend +## 0.2.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-events-node@0.2.6 + ## 0.2.6-next.1 ### Patch Changes diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json index fdaee7d4a8..8d75caf02b 100644 --- a/plugins/events-backend/package.json +++ b/plugins/events-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend", - "version": "0.2.6-next.1", + "version": "0.2.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-node/CHANGELOG.md b/plugins/events-node/CHANGELOG.md index c44e1e3999..a8ff8ed2e5 100644 --- a/plugins/events-node/CHANGELOG.md +++ b/plugins/events-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-node +## 0.2.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.2 + ## 0.2.6-next.1 ### Patch Changes diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json index 7a368206bf..497d668cde 100644 --- a/plugins/events-node/package.json +++ b/plugins/events-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-node", "description": "The plugin-events-node module for @backstage/plugin-events-backend", - "version": "0.2.6-next.1", + "version": "0.2.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md index 3fb578f05a..b71a26219e 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @internal/plugin-todo-list-backend +## 1.0.13 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 1.0.13-next.1 ### Patch Changes diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 0b635586b7..bec7f06a4c 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list-backend", - "version": "1.0.13-next.1", + "version": "1.0.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index c12164fa62..fad5737566 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,14 @@ # @internal/plugin-todo-list +## 1.0.13 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + ## 1.0.13-next.1 ### Patch Changes diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index 4ee26dea2c..5dff8b4a15 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list", - "version": "1.0.13-next.1", + "version": "1.0.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore-backend/CHANGELOG.md b/plugins/explore-backend/CHANGELOG.md index d178b091b1..a1763f7a0c 100644 --- a/plugins/explore-backend/CHANGELOG.md +++ b/plugins/explore-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-explore-backend +## 0.0.7 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-search-backend-module-explore@0.1.1 + - @backstage/config@1.0.7 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-common@1.2.3 + ## 0.0.7-next.1 ### Patch Changes diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json index 7b21e885c1..538468a118 100644 --- a/plugins/explore-backend/package.json +++ b/plugins/explore-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-explore-backend", - "version": "0.0.7-next.1", + "version": "0.0.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md index 36d04b4231..fbfe54f16b 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-explore +## 0.4.3 + +### Patch Changes + +- 1996920782b: Make sure that the first support button row does not break across lines +- 4851581deb6: Display the title of the entity on the explore card if present, otherwise stick to the name +- a6025e25d99: Updated the example code in the "Customization" section of the README to make the imports match the components used. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-explore-react@0.0.28 + - @backstage/plugin-search-common@1.2.3 + ## 0.4.3-next.2 ### Patch Changes diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 21c8fcc58b..b0c5bf3fd9 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore", "description": "A Backstage plugin for building an exploration page of your software ecosystem", - "version": "0.4.3-next.2", + "version": "0.4.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md index 9822bb684e..4353f8e6ba 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-firehydrant +## 0.2.2 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.2.2-next.2 ### Patch Changes diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 260b3ad47f..f2eda9092c 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-firehydrant", "description": "A Backstage plugin that integrates towards FireHydrant", - "version": "0.2.2-next.2", + "version": "0.2.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index ea411c0558..2ca2c69658 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-fossa +## 0.2.50 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.2.50-next.2 ### Patch Changes diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index a1b9e48f3b..caaa497130 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-fossa", "description": "A Backstage plugin that integrates towards FOSSA", - "version": "0.2.50-next.2", + "version": "0.2.50", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md index b211ebd95a..cb1f1e451b 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-gcalendar +## 0.3.14 + +### Patch Changes + +- f493ccb9589: Pass user info email scope on auth refresh to resolve invalid credentials error +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.3.14-next.1 ### Patch Changes diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index 10375e2e3f..eb19dd4e6f 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.14-next.1", + "version": "0.3.14", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index 8254e86dbc..54265c8c59 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gcp-projects +## 0.3.37 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + ## 0.3.37-next.1 ### Patch Changes diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 9857a6ccf1..6d320cad6d 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gcp-projects", "description": "A Backstage plugin that helps you manage projects in GCP", - "version": "0.3.37-next.1", + "version": "0.3.37", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index 7899cff4fe..80f09319d0 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-git-release-manager +## 0.3.31 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + ## 0.3.31-next.2 ### Patch Changes diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index a73c35aead..76d18dc224 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-git-release-manager", "description": "A Backstage plugin that helps you manage releases in git", - "version": "0.3.31-next.2", + "version": "0.3.31", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index 8b64c47ac8..199051dd04 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-github-actions +## 0.5.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.5.18-next.2 ### Patch Changes diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index a2c25741be..98a558cd0d 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-actions", "description": "A Backstage plugin that integrates towards GitHub Actions", - "version": "0.5.18-next.2", + "version": "0.5.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index ba1d67aece..0a699bdc57 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-github-deployments +## 0.1.49 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.1.49-next.2 ### Patch Changes diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index c9df936591..08c7e1aa9d 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-deployments", "description": "A Backstage plugin that integrates towards GitHub Deployments", - "version": "0.1.49-next.2", + "version": "0.1.49", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md index ee2e47570d..6f83ae81cf 100644 --- a/plugins/github-issues/CHANGELOG.md +++ b/plugins/github-issues/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-github-issues +## 0.2.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.2.7-next.2 ### Patch Changes diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index 8a12aeb2de..c6685eff13 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-github-issues", - "version": "0.2.7-next.2", + "version": "0.2.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md index 53bcb9b570..704dc495c1 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.12 + +### Patch Changes + +- cf125c36569: The `EntityTeamPullRequestsContent` and `EntityTeamPullRequestsCard` support the ability to view the labels/tags added to each PR +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.12-next.2 ### Patch Changes diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index 824d265abe..da3c929b43 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-pull-requests-board", "description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team", - "version": "0.1.12-next.2", + "version": "0.1.12", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index c5eba8def3..4aed3f9ab3 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-gitops-profiles +## 0.3.36 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + ## 0.3.36-next.1 ### Patch Changes diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index e721682976..e374b49335 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gitops-profiles", "description": "A Backstage plugin that helps you manage GitOps profiles", - "version": "0.3.36-next.1", + "version": "0.3.36", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index 9eb9964c96..0014eebd8c 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-gocd +## 0.1.24 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.1.24-next.2 ### Patch Changes diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index c8fca38e23..11ee841aa2 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gocd", "description": "A Backstage plugin that integrates towards GoCD", - "version": "0.1.24-next.2", + "version": "0.1.24", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index 3d49c1b29f..5f395bda29 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphiql +## 0.2.50 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + ## 0.2.50-next.1 ### Patch Changes diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 219551e6e7..d5dae8c2ec 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphiql", "description": "Backstage plugin for browsing GraphQL APIs", - "version": "0.2.50-next.1", + "version": "0.2.50", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md index 898e185d5d..14f2b75eac 100644 --- a/plugins/graphql-backend/CHANGELOG.md +++ b/plugins/graphql-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphql-backend +## 0.1.35 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-graphql@0.3.20 + ## 0.1.35-next.1 ### Patch Changes diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 388b587040..cc8c3e3059 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-backend", "description": "An experimental Backstage backend plugin for GraphQL", - "version": "0.1.35-next.1", + "version": "0.1.35", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/graphql-voyager/CHANGELOG.md b/plugins/graphql-voyager/CHANGELOG.md index c47af7b006..394b99f5c7 100644 --- a/plugins/graphql-voyager/CHANGELOG.md +++ b/plugins/graphql-voyager/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphql-voyager +## 0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.3-next.1 ### Patch Changes diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json index c459e4fbf8..683b664b33 100644 --- a/plugins/graphql-voyager/package.json +++ b/plugins/graphql-voyager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-voyager", "description": "Backstage plugin for GraphQL Voyager", - "version": "0.1.3-next.1", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index 3996c77103..b626f5c5e6 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-home +## 0.5.2 + +### Patch Changes + +- acca8966465: Remove object-hash dependency +- 957cd9b8958: Use the semantic time tag for rendering world clocks on homepage headers. +- 0e19e7b0f3a: Bump to using the later v5 versions of `@rjsf/*` +- 5272cfabc3b: Add missing @rjsf/core dependency +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + ## 0.5.2-next.2 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index 12e55d80cd..ff714b16ca 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home", "description": "A Backstage plugin that helps you build a home page", - "version": "0.5.2-next.2", + "version": "0.5.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md index a1fb6e375d..0b1c5b5696 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-ilert +## 0.2.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.2.7-next.2 ### Patch Changes diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 0e08159481..396d5f6860 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-ilert", "description": "A Backstage plugin that integrates towards iLert", - "version": "0.2.7-next.2", + "version": "0.2.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md index 8e4463f46b..6bb9cba867 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-jenkins-backend +## 0.2.0 + +### Minor Changes + +- cf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay. + + Added link to view build in Jenkins CI/CD table action column. + +### Patch Changes + +- 670a2dd6f4e: Fix handling of slashes in branch names +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-jenkins-common@0.1.15 + - @backstage/plugin-permission-common@0.7.5 + ## 0.1.35-next.1 ### Patch Changes diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 07624593c3..f45908c04e 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins-backend", "description": "A Backstage backend plugin that integrates towards Jenkins", - "version": "0.1.35-next.1", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index 9d617e1d39..1b289faef2 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-jenkins +## 0.8.0 + +### Minor Changes + +- cf95c5137c9: Updated rebuild to use Jenkins API replay build, which works for Jenkins jobs that have required parameters. Jenkins SDK could not be used for this request because it does not have support for replay. + + Added link to view build in Jenkins CI/CD table action column. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-jenkins-common@0.1.15 + ## 0.7.17-next.2 ### Patch Changes diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 6d8d50d26b..1f980215c2 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins", "description": "A Backstage plugin that integrates towards Jenkins", - "version": "0.7.17-next.2", + "version": "0.8.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md index 2b788a1bea..3620351d77 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-kafka-backend +## 0.2.38 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.2.38-next.1 ### Patch Changes diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 7eb51bfe72..584dcfe8a2 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka-backend", "description": "A Backstage backend plugin that integrates towards Kafka", - "version": "0.2.38-next.1", + "version": "0.2.38", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md index 56e8a42053..fd41b779a6 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-kafka +## 0.3.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + ## 0.3.18-next.2 ### Patch Changes diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 4459b75b18..0baee01c27 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka", "description": "A Backstage plugin that integrates towards Kafka", - "version": "0.3.18-next.2", + "version": "0.3.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index d7ac1585f8..3ede951ab9 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,38 @@ # @backstage/plugin-kubernetes-backend +## 0.11.0 + +### Minor Changes + +- f4114f02d49: Allow fetching pod metrics limited by a `labelSelector`. + + This is used by the Kubernetes tab on a components' page and leads to much smaller responses being received from Kubernetes, especially with larger Kubernetes clusters. + +- 890988341e9: Update `aws-sdk` client from v2 to v3. + + **BREAKING**: The `AwsIamKubernetesAuthTranslator` class no longer exposes the following methods `awsGetCredentials`, `getBearerToken`, `getCredentials` and `validCredentials`. There is no replacement for these methods. + +### Patch Changes + +- 05f1d74539d: Kubernetes clusters now support `authProvider: aks`. When configured this way, + the `retrieveObjectsByServiceId` action will use the `auth.aks` value in the + request body as a bearer token to authenticate with Kubernetes. +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- a341129b754: Fixed a bug in the Kubernetes proxy endpoint where requests to clusters configured with client-side auth providers would always fail with a 500 status. +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-kubernetes-common@0.6.3 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + ## 0.11.0-next.2 ### Patch Changes diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index a45141b47d..7369e54041 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-backend", "description": "A Backstage backend plugin that integrates towards Kubernetes", - "version": "0.11.0-next.2", + "version": "0.11.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md index 9c8849c668..dd96cecbcf 100644 --- a/plugins/kubernetes-common/CHANGELOG.md +++ b/plugins/kubernetes-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-kubernetes-common +## 0.6.3 + +### Patch Changes + +- 05f1d74539d: AKS access tokens can now be sent over the wire to the Kubernetes backend. +- Updated dependencies + - @backstage/catalog-model@1.3.0 + - @backstage/plugin-permission-common@0.7.5 + ## 0.6.3-next.0 ### Patch Changes diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index 80911bac00..b3dff229d4 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-common", "description": "Common functionalities for kubernetes, to be shared between kubernetes and kubernetes-backend plugin", - "version": "0.6.3-next.0", + "version": "0.6.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index 0842800552..0f324ef8f0 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,55 @@ # @backstage/plugin-kubernetes +## 0.9.0 + +### Minor Changes + +- 280ec10c18e: Added Pod logs components for Kubernetes plugin + + **BREAKING**: `kubernetesProxyApi` for custom plugins built with components from the Kubernetes plugin apis, `kubernetesProxyApi` should be added to the plugin's API list. + + ``` + ... + export const kubernetesPlugin = createPlugin({ + id: 'kubernetes', + apis: [ + ... + createApiFactory({ + api: kubernetesProxyApiRef, + deps: { + kubernetesApi: kubernetesApiRef, + }, + factory: ({ kubernetesApi }) => + new KubernetesProxyClient({ + kubernetesApi, + }), + }), + ``` + + **BREAKING**: `KubernetesDrawer` is now called `KubernetesStructuredMetadataTableDrawer` so that we can do more than just show `StructuredMetadataTable` + + `import { KubernetesDrawer } from "@backstage/plugin-kubernetes"` + + should now be: + + `import { KubernetesStructuredMetadataTableDrawer } from "@backstage/plugin-kubernetes"` + +### Patch Changes + +- c7bad1005ba: The Kubernetes plugin now requests AKS access tokens from Azure when retrieving + objects from clusters configured with `authProvider: aks` and sets `auth.aks` in + its request bodies appropriately. +- a160e02c3d7: Omit managed fields in the Kubernetes resource YAML display. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/plugin-kubernetes-common@0.6.3 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.9.0-next.2 ### Patch Changes diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index a581c1a82b..e6a0b518a1 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes", "description": "A Backstage plugin that integrates towards Kubernetes", - "version": "0.9.0-next.2", + "version": "0.9.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse-backend/CHANGELOG.md b/plugins/lighthouse-backend/CHANGELOG.md index 81da2807af..5b0d9d8ecc 100644 --- a/plugins/lighthouse-backend/CHANGELOG.md +++ b/plugins/lighthouse-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-lighthouse-backend +## 0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-lighthouse-common@0.1.1 + ## 0.2.1-next.1 ### Patch Changes diff --git a/plugins/lighthouse-backend/package.json b/plugins/lighthouse-backend/package.json index 351ee3fb7e..eb48a5673d 100644 --- a/plugins/lighthouse-backend/package.json +++ b/plugins/lighthouse-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse-backend", "description": "Backend functionalities for lighthouse", - "version": "0.2.1-next.1", + "version": "0.2.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index a90222b49a..b8d70898fd 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-lighthouse +## 0.4.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-lighthouse-common@0.1.1 + ## 0.4.3-next.2 ### Patch Changes diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 7e66e6fdc6..377614ca97 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse", "description": "A Backstage plugin that integrates towards Lighthouse", - "version": "0.4.3-next.2", + "version": "0.4.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist-backend/CHANGELOG.md b/plugins/linguist-backend/CHANGELOG.md index 5096043450..a0ab8c5990 100644 --- a/plugins/linguist-backend/CHANGELOG.md +++ b/plugins/linguist-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-linguist-backend +## 0.2.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-linguist-common@0.1.0 + ## 0.2.2-next.1 ### Patch Changes diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index f3feacb740..5907f11710 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist-backend", - "version": "0.2.2-next.1", + "version": "0.2.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist/CHANGELOG.md b/plugins/linguist/CHANGELOG.md index 5c12d0df14..0d927fed5b 100644 --- a/plugins/linguist/CHANGELOG.md +++ b/plugins/linguist/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-linguist +## 0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-linguist-common@0.1.0 + ## 0.1.3-next.2 ### Patch Changes diff --git a/plugins/linguist/package.json b/plugins/linguist/package.json index 885462b0e0..89faf81fd0 100644 --- a/plugins/linguist/package.json +++ b/plugins/linguist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist", - "version": "0.1.3-next.2", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/microsoft-calendar/CHANGELOG.md b/plugins/microsoft-calendar/CHANGELOG.md index 98e2cbf1c1..a9bc798414 100644 --- a/plugins/microsoft-calendar/CHANGELOG.md +++ b/plugins/microsoft-calendar/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-microsoft-calendar +## 0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.1.3-next.1 ### Patch Changes diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json index ca444bf7df..070404422f 100644 --- a/plugins/microsoft-calendar/package.json +++ b/plugins/microsoft-calendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-microsoft-calendar", - "version": "0.1.3-next.1", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index 1bbac565ca..ad52878764 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-newrelic-dashboard +## 0.2.11 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.2.11-next.2 ### Patch Changes diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index 696762913b..cebda38964 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.2.11-next.2", + "version": "0.2.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md index 88daca0ff0..c03b0ad933 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-newrelic +## 0.3.36 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + ## 0.3.36-next.1 ### Patch Changes diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 628280099c..c8de615d73 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-newrelic", "description": "A Backstage plugin that integrates towards New Relic", - "version": "0.3.36-next.1", + "version": "0.3.36", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/octopus-deploy/CHANGELOG.md b/plugins/octopus-deploy/CHANGELOG.md index 228c8b5a18..66465dc514 100644 --- a/plugins/octopus-deploy/CHANGELOG.md +++ b/plugins/octopus-deploy/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-octopus-deploy +## 0.2.0 + +### Minor Changes + +- 87211bc2873: Added support for Octopus Deploy spaces. The octopus.com/project-id annotation can now (optionally) be prefixed by a space identifier, for example. Spaces-1/Projects-102. + Also note that some of this plugins exported API's have changed to accommodate this change, changing from separate arguments to a single object. + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.2.0-next.2 ### Patch Changes diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json index 2140f130e5..6597f4f69c 100644 --- a/plugins/octopus-deploy/package.json +++ b/plugins/octopus-deploy/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-octopus-deploy", - "version": "0.2.0-next.2", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org-react/CHANGELOG.md b/plugins/org-react/CHANGELOG.md index d7a5b72817..a418acb8e5 100644 --- a/plugins/org-react/CHANGELOG.md +++ b/plugins/org-react/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-org-react +## 0.1.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.1.7-next.2 ### Patch Changes diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index 5c33388f69..bd7d59ba6b 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-org-react", - "version": "0.1.7-next.2", + "version": "0.1.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index f729d46e19..60bec7da2f 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-org +## 0.6.8 + +### Patch Changes + +- 6e387c077a4: Changed the MembersListCard component to allow displaying aggregated members when viewing a group. Now, a toggle switch can be displayed that lets you switch between showing direct members and aggregated members. + + To enable this new feature, set the showAggregateMembersToggle prop on EntityMembersListCard: + + ```jsx + // In packages/app/src/components/catalog/EntityPage.tsx + const groupPage = ( + // ... + + // ... + ); + ``` + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.6.8-next.2 ### Patch Changes diff --git a/plugins/org/package.json b/plugins/org/package.json index 6755d8fd64..cdbf8cd153 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-org", "description": "A Backstage plugin that helps you create entity pages for your organization", - "version": "0.6.8-next.2", + "version": "0.6.8", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md index 36f1e4a7ca..671772c119 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-pagerduty +## 0.5.11 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.5.11-next.2 ### Patch Changes diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 89bc2367da..b635ade95e 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-pagerduty", "description": "A Backstage plugin that integrates towards PagerDuty", - "version": "0.5.11-next.2", + "version": "0.5.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md index fde89edbe9..fc478922db 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-periskop-backend +## 0.1.16 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + ## 0.1.16-next.1 ### Patch Changes diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index b453b2bc59..520c4c03ca 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop-backend", - "version": "0.1.16-next.1", + "version": "0.1.16", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md index 79f636a76a..65e6b2640d 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-periskop +## 0.1.16 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.1.16-next.2 ### Patch Changes diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 5b277bbcce..b3f97452b6 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop", - "version": "0.1.16-next.2", + "version": "0.1.16", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index 02bb528853..a5a5325d16 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-permission-backend +## 0.5.20 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + ## 0.5.20-next.1 ### Patch Changes diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 0156c96626..e1fa9785c1 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-backend", - "version": "0.5.20-next.1", + "version": "0.5.20", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index b2014e3e62..eb964866ce 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,36 @@ # @backstage/plugin-permission-node +## 0.7.8 + +### Patch Changes + +- a788e715cfc: `createPermissionIntegrationRouter` now accepts rules and permissions for multiple resource types. Example: + + ```typescript + createPermissionIntegrationRouter({ + resources: [ + { + resourceType: 'resourceType-1', + permissions: permissionsResourceType1, + rules: rulesResourceType1, + }, + { + resourceType: 'resourceType-2', + permissions: permissionsResourceType2, + rules: rulesResourceType2, + }, + ], + }); + ``` + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + ## 0.7.8-next.1 ### Patch Changes diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index a0187f4576..6a955ef29f 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-node", "description": "Common permission and authorization utilities for backend plugins", - "version": "0.7.8-next.1", + "version": "0.7.8", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist-backend/CHANGELOG.md b/plugins/playlist-backend/CHANGELOG.md index 2bf296d6b4..31f1177294 100644 --- a/plugins/playlist-backend/CHANGELOG.md +++ b/plugins/playlist-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-playlist-backend +## 0.3.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-playlist-common@0.1.6 + ## 0.3.1-next.1 ### Patch Changes diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json index c0ac336383..0d909104b9 100644 --- a/plugins/playlist-backend/package.json +++ b/plugins/playlist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist-backend", - "version": "0.3.1-next.1", + "version": "0.3.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist/CHANGELOG.md b/plugins/playlist/CHANGELOG.md index 30f6ef919d..2ecdf65cb7 100644 --- a/plugins/playlist/CHANGELOG.md +++ b/plugins/playlist/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-playlist +## 0.1.9 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-permission-react@0.4.12 + - @backstage/plugin-playlist-common@0.1.6 + ## 0.1.9-next.2 ### Patch Changes diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index d30f4851d7..5cd050940d 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist", - "version": "0.1.9-next.2", + "version": "0.1.9", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md index e18a0f5a7f..6bd1c9004c 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-proxy-backend +## 0.2.39 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + ## 0.2.39-next.1 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index f16c87f3d7..2f44342962 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-proxy-backend", "description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend", - "version": "0.2.39-next.1", + "version": "0.2.39", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/puppetdb/CHANGELOG.md b/plugins/puppetdb/CHANGELOG.md index 8581c7650b..272f07dc01 100644 --- a/plugins/puppetdb/CHANGELOG.md +++ b/plugins/puppetdb/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-puppetdb +## 0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.1.1-next.2 ### Patch Changes diff --git a/plugins/puppetdb/package.json b/plugins/puppetdb/package.json index 9782269666..b04b3a7b1c 100644 --- a/plugins/puppetdb/package.json +++ b/plugins/puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-puppetdb", "description": "Backstage plugin to visualize resource information and Puppet facts from PuppetDB.", - "version": "0.1.1-next.2", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md index 337ba58f5f..1c1d8faffa 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-rollbar-backend +## 0.1.42 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + ## 0.1.42-next.1 ### Patch Changes diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 170f06dcb0..8c5a2bd669 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar-backend", "description": "A Backstage backend plugin that integrates towards Rollbar", - "version": "0.1.42-next.1", + "version": "0.1.42", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md index d4d34fec32..ebe6cd0a7e 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-rollbar +## 0.4.18 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.4.18-next.2 ### Patch Changes diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index cd3c302b03..ee46f656fd 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar", "description": "A Backstage plugin that integrates towards Rollbar", - "version": "0.4.18-next.2", + "version": "0.4.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md index 5ef00b8f91..3add549e58 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-scaffolder-backend-module-confluence-to-markdown +## 0.1.2 + +### Patch Changes + +- 7c116bcac7f: Fixed the way that some request errors are thrown +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.1.2-next.2 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json index 57602c2d27..40fc82ecea 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown", "description": "The confluence-to-markdown module for @backstage/plugin-scaffolder-backend", - "version": "0.1.2-next.2", + "version": "0.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md index 1c1d336fd1..1ea629a2fb 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-scaffolder-backend-module-cookiecutter +## 0.2.21 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.2.21-next.2 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index d8649918c0..89b2997ea3 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-cookiecutter", "description": "A module for the scaffolder backend that lets you template projects using cookiecutter", - "version": "0.2.21-next.2", + "version": "0.2.21", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md index 72999216df..f040e0670e 100644 --- a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-scaffolder-backend-module-gitlab +## 0.2.0 + +### Minor Changes + +- 439e2986be1: Add a new scaffolder action for gitlab to ensure a group exists + +### Patch Changes + +- f1496d4ab6f: Fix input schema validation issue for gitlab actions: + + - gitlab:group:ensureExists + - gitlab:projectAccessToken:create + - gitlab:projectDeployToken:create + - gitlab:projectVariable:create + +- Updated dependencies + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.2.0-next.2 ### Minor Changes diff --git a/plugins/scaffolder-backend-module-gitlab/package.json b/plugins/scaffolder-backend-module-gitlab/package.json index 9c36616eb8..07cc725570 100644 --- a/plugins/scaffolder-backend-module-gitlab/package.json +++ b/plugins/scaffolder-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-gitlab", - "version": "0.2.0-next.2", + "version": "0.2.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md index bd263d65a7..0350dfbf5c 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.4.14 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.14.0 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.4.14-next.2 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index e45fc153ae..226e4ab3cb 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-rails", "description": "A module for the scaffolder backend that lets you template projects using Rails", - "version": "0.4.14-next.2", + "version": "0.4.14", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md index 4206d39413..f3cf978ea6 100644 --- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-backend-module-sentry +## 0.1.5 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.1.5-next.2 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json index d66fea6d60..2a1bf2f61f 100644 --- a/plugins/scaffolder-backend-module-sentry/package.json +++ b/plugins/scaffolder-backend-module-sentry/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-sentry", - "version": "0.1.5-next.2", + "version": "0.1.5", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md index 232510d721..7509ba3d76 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.18 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + ## 0.2.18-next.2 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 952a220c5a..67f6caff59 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-yeoman", - "version": "0.2.18-next.2", + "version": "0.2.18", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index 221362e637..d4aa251b34 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,39 @@ # @backstage/plugin-scaffolder-backend +## 1.14.0 + +### Minor Changes + +- 67115f532b8: Expose both types of scaffolder permissions and rules through the metadata endpoint. + + The metadata endpoint now correctly exposes both types of scaffolder permissions and rules (for both the template and action resource types) through the metadata endpoint. + +- a73b3c0b097: Add ability to use `defaultNamespace` and `defaultKind` for scaffolder action `catalog:fetch` + +### Patch Changes + +- 1a48b84901c: Bump minimum required version of `vm2` to be 3.9.18 +- d20c87966a4: Bump minimum required version of `vm2` to be 3.9.17 +- 6d954de4b06: Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.9.1 + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-scaffolder-node@0.1.3 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + ## 1.13.2-next.2 ### Patch Changes diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 3d1794410d..aeb7861f4b 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend", "description": "The Backstage backend plugin that helps you create new things", - "version": "1.13.2-next.2", + "version": "1.14.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-common/CHANGELOG.md b/plugins/scaffolder-common/CHANGELOG.md index b09bf55eb3..b5bcabb64f 100644 --- a/plugins/scaffolder-common/CHANGELOG.md +++ b/plugins/scaffolder-common/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-scaffolder-common +## 1.3.0 + +### Minor Changes + +- 82e10a6939c: Add support for Markdown text blob outputs from templates +- 67115f532b8: Expose scaffolder permissions in new sub-aggregations. + + In addition to exporting a list of all scaffolder permissions in `scaffolderPermissions`, scaffolder-common now exports `scaffolderTemplatePermissions` and `scaffolderActionPermissions`, which contain subsets of the scaffolder permissions separated by resource type. + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + ## 1.3.0-next.0 ### Minor Changes diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index c12f16dbad..45b4986155 100644 --- a/plugins/scaffolder-common/package.json +++ b/plugins/scaffolder-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-common", "description": "Common functionalities for the scaffolder, to be shared between scaffolder and scaffolder-backend plugin", - "version": "1.3.0-next.0", + "version": "1.3.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md index 5936463ac8..7c4f4316ec 100644 --- a/plugins/scaffolder-node/CHANGELOG.md +++ b/plugins/scaffolder-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-node +## 0.1.3 + +### Patch Changes + +- 6d954de4b06: Update typing for `RouterOptions::actions` and `ScaffolderActionsExtensionPoint::addActions` to allow any kind of action being assigned to it. +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/types@1.0.2 + ## 0.1.3-next.2 ### Patch Changes diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json index d00dd15226..4eda195f91 100644 --- a/plugins/scaffolder-node/package.json +++ b/plugins/scaffolder-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-node", "description": "The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend", - "version": "0.1.3-next.2", + "version": "0.1.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md index 8d93049843..59434d30cf 100644 --- a/plugins/scaffolder-react/CHANGELOG.md +++ b/plugins/scaffolder-react/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-scaffolder-react +## 1.4.0 + +### Minor Changes + +- 82e10a6939c: Add support for Markdown text blob outputs from templates + +### Patch Changes + +- ad1a1429de4: Improvements to the `scaffolder/next` buttons UX: + + - Added padding around the "Create" button in the `Stepper` component + - Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu + - Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4 + ## 1.4.0-next.2 ### Minor Changes diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index c455eeebf6..5e5732fb04 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-react", "description": "A frontend library that helps other Backstage plugins interact with the Scaffolder", - "version": "1.4.0-next.2", + "version": "1.4.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index 577517a127..9658bfc48f 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-scaffolder +## 1.13.1 + +### Patch Changes + +- d560d457c98: Fix case GitLab workspace is a nested subgroup +- ad1a1429de4: Improvements to the `scaffolder/next` buttons UX: + + - Added padding around the "Create" button in the `Stepper` component + - Added a button bar that includes the "Cancel" and "Start Over" buttons to the `OngoingTask` component. The state of these buttons match their existing counter parts in the Context Menu + - Added a "Show Button Bar"/"Hide Button Bar" item to the `ContextMenu` component + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/plugin-scaffolder-common@1.3.0 + - @backstage/plugin-scaffolder-react@1.4.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-react@0.4.12 + ## 1.13.1-next.2 ### Patch Changes diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 4b5e34e5de..89bb9f90d6 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder", "description": "The Backstage plugin that helps you create new things", - "version": "1.13.1-next.2", + "version": "1.13.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-catalog/CHANGELOG.md b/plugins/search-backend-module-catalog/CHANGELOG.md index bf64047538..f8c7e04d44 100644 --- a/plugins/search-backend-module-catalog/CHANGELOG.md +++ b/plugins/search-backend-module-catalog/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-search-backend-module-catalog +## 0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/search-backend-module-catalog/package.json b/plugins/search-backend-module-catalog/package.json index 15421990e2..8e0e30d711 100644 --- a/plugins/search-backend-module-catalog/package.json +++ b/plugins/search-backend-module-catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-catalog", "description": "A module for the search backend that exports catalog modules", - "version": "0.1.1-next.1", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md index a74c8e5c0d..e699ee60c7 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-search-backend-module-elasticsearch +## 1.3.0 + +### Minor Changes + +- 3d72bdb41c7: Upgrade to aws-sdk v3 and include OpenSearch Serverless support + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-search-common@1.2.3 + ## 1.3.0-next.2 ### Minor Changes diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 20f12c3592..e8d999e840 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-elasticsearch", "description": "A module for the search backend that implements search using ElasticSearch", - "version": "1.3.0-next.2", + "version": "1.3.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-explore/CHANGELOG.md b/plugins/search-backend-module-explore/CHANGELOG.md index df693832db..529cdcc99e 100644 --- a/plugins/search-backend-module-explore/CHANGELOG.md +++ b/plugins/search-backend-module-explore/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-search-backend-module-explore +## 0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-common@1.2.3 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/search-backend-module-explore/package.json b/plugins/search-backend-module-explore/package.json index 00f63ef41e..6a6f92a9cc 100644 --- a/plugins/search-backend-module-explore/package.json +++ b/plugins/search-backend-module-explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-explore", "description": "A module for the search backend that exports explore modules", - "version": "0.1.1-next.1", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md index 9b9ddfa0ff..98354dd3ea 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-search-backend-module-pg +## 0.5.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/plugin-search-common@1.2.3 + ## 0.5.6-next.1 ### Patch Changes diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 5d63d913e0..e623ba034d 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-pg", "description": "A module for the search backend that implements search using PostgreSQL", - "version": "0.5.6-next.1", + "version": "0.5.6", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-techdocs/CHANGELOG.md b/plugins/search-backend-module-techdocs/CHANGELOG.md index 83eed95d8e..fe6fc1420d 100644 --- a/plugins/search-backend-module-techdocs/CHANGELOG.md +++ b/plugins/search-backend-module-techdocs/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-search-backend-module-techdocs +## 0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-techdocs-node@1.7.1 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/search-backend-module-techdocs/package.json b/plugins/search-backend-module-techdocs/package.json index f7d7151aeb..b45a7a3b66 100644 --- a/plugins/search-backend-module-techdocs/package.json +++ b/plugins/search-backend-module-techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-techdocs", "description": "A module for the search backend that exports techdocs modules", - "version": "0.1.1-next.1", + "version": "0.1.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md index 00a828f132..7aca52d696 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-search-backend-node +## 1.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + ## 1.2.1-next.1 ### Patch Changes diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 9d7b0b0210..21a38cf3b5 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-node", "description": "A library for Backstage backend plugins that want to interact with the search backend plugin", - "version": "1.2.1-next.1", + "version": "1.2.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md index fbc53b4f2d..5bbc969216 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-search-backend +## 1.3.1 + +### Patch Changes + +- 021cfbb5152: Added an OpenAPI 3.0 spec and enforced schema-first model on the router. +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-permission-node@0.7.8 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/plugin-search-backend-node@1.2.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + ## 1.3.1-next.2 ### Patch Changes diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index 53059b2355..c7658ab754 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend", "description": "The Backstage backend plugin that provides your backstage app with search", - "version": "1.3.1-next.2", + "version": "1.3.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index 411953c6f9..6527d67bb9 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/plugin-search-react +## 1.6.0 + +### Minor Changes + +- 750e45539ad: Add close button & improve search input. + + MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly. + + SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given. + +- 1ce7f84b2e8: accepts InputProp property that can override keys from default + +### Patch Changes + +- f785f0804cd: `SearchPagination` now automatically resets the page cursor when the page limit is changed +- adb31096bc2: Fix text-overflow UI issue for Lifecycle spans in SearchFilter checkbox labels. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-search-common@1.2.3 + ## 1.6.0-next.2 ### Minor Changes diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index e424788e31..6a5b326f34 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-react", - "version": "1.6.0-next.2", + "version": "1.6.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index f3c93f5142..2427adb905 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/plugin-search +## 1.3.0 + +### Minor Changes + +- 750e45539ad: Add close button & improve search input. + + MUI's Paper wrapping the SearchBar in the SearchPage was removed, we recommend users update their apps accordingly. + + SearchBarBase's TextField's label support added & aria-label uses label string if present, tests relying on the default placeholder value should still work unless custom placeholder was given. + +### Patch Changes + +- 0e3d8d69318: Fixed 404 Error when fetching search results due to URL encoding changes +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-search-common@1.2.3 + ## 1.3.0-next.2 ### Patch Changes diff --git a/plugins/search/package.json b/plugins/search/package.json index c4f7f680b6..f95a25ee40 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search", "description": "The Backstage plugin that provides your backstage app with search", - "version": "1.3.0-next.2", + "version": "1.3.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index be844d6c4f..cd25c33475 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-sentry +## 0.5.3 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.5.3-next.2 ### Patch Changes diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 70177fc4d7..454b1b0259 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sentry", "description": "A Backstage plugin that integrates towards Sentry", - "version": "0.5.3-next.2", + "version": "0.5.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index fab37db64c..d151c6cdb4 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-shortcuts +## 0.3.10 + +### Patch Changes + +- 8a7174e297c: Marked `LocalStoredShortcuts` as deprecated, replacing it with `DefaultShortcutsApi` whose naming more clearly suggests that the shortcuts aren't necessarily stored locally (it depends on the storage implementation). +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/types@1.0.2 + ## 0.3.10-next.2 ### Patch Changes diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 511247369f..21dd39256d 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-shortcuts", "description": "A Backstage plugin that provides a shortcuts feature to the sidebar", - "version": "0.3.10-next.2", + "version": "0.3.10", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md index cf90264ece..ab84aef856 100644 --- a/plugins/sonarqube-backend/CHANGELOG.md +++ b/plugins/sonarqube-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-sonarqube-backend +## 0.1.10 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.1.10-next.1 ### Patch Changes diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index 9b452471de..28b61aa1be 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-backend", - "version": "0.1.10-next.1", + "version": "0.1.10", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index 1e186aa844..d9624d2449 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-sonarqube +## 0.6.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-sonarqube-react@0.1.5 + ## 0.6.7-next.2 ### Patch Changes diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index fcf247969b..1fbe857d9d 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.6.7-next.2", + "version": "0.6.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index 4f1741cefe..9685a0c003 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-splunk-on-call +## 0.4.7 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + ## 0.4.7-next.2 ### Patch Changes diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 95293d447d..4d0a79927b 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-splunk-on-call", "description": "A Backstage plugin that integrates towards Splunk On-Call", - "version": "0.4.7-next.2", + "version": "0.4.7", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md index 03006fd490..a82a7abb05 100644 --- a/plugins/stack-overflow-backend/CHANGELOG.md +++ b/plugins/stack-overflow-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-stack-overflow-backend +## 0.2.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/config@1.0.7 + - @backstage/plugin-search-common@1.2.3 + ## 0.2.1-next.1 ### Patch Changes diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index fd08b70f52..29285a5972 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow-backend", - "version": "0.2.1-next.1", + "version": "0.2.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md index dad8fb3385..d0a05501a9 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-stack-overflow +## 0.1.15 + +### Patch Changes + +- c1ff65f315a: StackOverflowSearchResultListItem can now accept an empty result prop so that it can be rendered in the suggested SearchResultListItem pattern. +- Updated dependencies + - @backstage/plugin-home@0.5.2 + - @backstage/theme@0.3.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/plugin-search-common@1.2.3 + ## 0.1.15-next.2 ### Patch Changes diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 2f966224d2..5b9cdb0213 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow", - "version": "0.1.15-next.2", + "version": "0.1.15", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stackstorm/CHANGELOG.md b/plugins/stackstorm/CHANGELOG.md index 3763d9d295..c75324e862 100644 --- a/plugins/stackstorm/CHANGELOG.md +++ b/plugins/stackstorm/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-stackstorm +## 0.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.1.2-next.1 ### Patch Changes diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json index 8787199746..f1ba49ca0b 100644 --- a/plugins/stackstorm/package.json +++ b/plugins/stackstorm/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-stackstorm", "description": "A Backstage plugin that integrates towards StackStorm", - "version": "0.1.2-next.1", + "version": "0.1.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md index 864c0cb830..fd3e6023f8 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.29 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-tech-insights-node@0.4.3 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-tech-insights-common@0.2.10 + ## 0.1.29-next.1 ### Patch Changes diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 489f36e2f8..46ae292ff5 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend-module-jsonfc", - "version": "0.1.29-next.1", + "version": "0.1.29", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index 1c3b902c3f..faaa4b1960 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-tech-insights-backend +## 0.5.11 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-tech-insights-node@0.4.3 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-tech-insights-common@0.2.10 + ## 0.5.11-next.1 ### Patch Changes diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 09bb9c8d6f..2525d1e914 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend", - "version": "0.5.11-next.1", + "version": "0.5.11", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index e5eec67a40..ee4a160a76 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-insights-node +## 0.4.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + - @backstage/plugin-tech-insights-common@0.2.10 + ## 0.4.3-next.1 ### Patch Changes diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index bc5c0816f7..b97076a11e 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-node", - "version": "0.4.3-next.1", + "version": "0.4.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index 23fb28deea..4f36cfba16 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-tech-insights +## 0.3.10 + +### Patch Changes + +- 22963209d23: Added the possibility to customize the check description in the scorecard component. + + - The `CheckResultRenderer` type now exposes an optional `description` method that allows to overwrite the description with a different string or a React component for a provided check result. + + Until now only the `BooleanCheck` element could be overridden, but from now on it's also possible to override the description for a check. + As an example, the description could change depending on the check result. Refer to the [README](https://github.com/backstage/backstage/blob/master/plugins/tech-insights/README.md#adding-custom-rendering-components) file for more details + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-tech-insights-common@0.2.10 + ## 0.3.10-next.2 ### Patch Changes diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 4e2604a33a..a6facfff46 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights", - "version": "0.3.10-next.2", + "version": "0.3.10", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index c6d0bd29cd..8250d4bfe8 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-radar +## 0.6.4 + +### Patch Changes + +- be4fa53fab8: Fix description links when clicking entry in radar. +- Added the ability to display a timeline to each entry in the details box +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + ## 0.6.4-next.2 ### Patch Changes diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index a5f6456850..7fb7520e25 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-tech-radar", "description": "A Backstage plugin that lets you display a Tech Radar for your organization", - "version": "0.6.4-next.2", + "version": "0.6.4", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md index 051190ab61..ede86cb6bb 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.13 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-techdocs@1.6.2 + - @backstage/plugin-catalog@1.11.0 + - @backstage/core-app-api@1.8.0 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/test-utils@1.3.1 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/core-plugin-api@1.5.1 + ## 1.0.13-next.2 ### Patch Changes diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index 7de356960f..2e31a0d6bd 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-addons-test-utils", - "version": "1.0.13-next.2", + "version": "1.0.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index 8df2623fa0..309a3d3ea6 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-techdocs-backend +## 1.6.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-techdocs-node@1.7.1 + - @backstage/plugin-search-backend-module-techdocs@0.1.1 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-common@1.0.13 + - @backstage/plugin-permission-common@0.7.5 + - @backstage/plugin-search-common@1.2.3 + ## 1.6.2-next.1 ### Patch Changes diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index b90c299621..999bc7f93b 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-backend", "description": "The Backstage backend plugin that renders technical documentation for your components", - "version": "1.6.2-next.1", + "version": "1.6.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md index b267a89b8b..01765d39de 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.0.13 + +### Patch Changes + +- 6afc7f052ca: Show cursor pointer when hovering on lightbox +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/integration@1.4.5 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/core-plugin-api@1.5.1 + ## 1.0.13-next.2 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index 527e5487dc..7ef4a1f2c1 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-module-addons-contrib", "description": "Plugin module for contributed TechDocs Addons", - "version": "1.0.13-next.2", + "version": "1.0.13", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md index e3715430c9..7737a13a13 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-techdocs-node +## 1.7.1 + +### Patch Changes + +- 3659c71c5d9: Standardize `@aws-sdk` v3 versions +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/integration-aws-node@0.1.3 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/plugin-search-common@1.2.3 + ## 1.7.1-next.1 ### Patch Changes diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index dde49d6b2c..d3ec2232cd 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-node", "description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli", - "version": "1.7.1-next.1", + "version": "1.7.1", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index 5247e6906f..9176553916 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-techdocs-react +## 1.1.6 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/version-bridge@1.0.4 + ## 1.1.6-next.1 ### Patch Changes diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 8a8c2c5cbc..ee523969c1 100644 --- a/plugins/techdocs-react/package.json +++ b/plugins/techdocs-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-react", "description": "Shared frontend utilities for TechDocs and Addons", - "version": "1.1.6-next.1", + "version": "1.1.6", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index f076a23b0b..5d21c2a5fe 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-techdocs +## 1.6.2 + +### Patch Changes + +- 863beb49498: Re-add the possibility to have trailing slashes in Techdocs navigation. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/integration@1.4.5 + - @backstage/plugin-search-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/integration-react@1.1.13 + - @backstage/plugin-techdocs-react@1.1.6 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/plugin-search-common@1.2.3 + ## 1.6.2-next.2 ### Patch Changes diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 1004055c45..cf6315286b 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs", "description": "The Backstage plugin that renders technical documentation for your components", - "version": "1.6.2-next.2", + "version": "1.6.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index 84d8807698..17a2eb8cf8 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-todo-backend +## 0.1.42 + +### Patch Changes + +- 901f1ada325: Added OpenAPI schema +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-client@1.4.1 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.1.42-next.1 ### Patch Changes diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 9385ec0ee6..84da46ced1 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo-backend", "description": "A Backstage backend plugin that lets you browse TODO comments in your source code", - "version": "0.1.42-next.1", + "version": "0.1.42", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md index 0a0a205d06..960f71c444 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-todo +## 0.2.20 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.2.20-next.2 ### Patch Changes diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 3dd5822154..f388d19885 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo", "description": "A Backstage plugin that lets you browse TODO comments in your source code", - "version": "0.2.20-next.2", + "version": "0.2.20", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings-backend/CHANGELOG.md b/plugins/user-settings-backend/CHANGELOG.md index 4420e63f8e..bf3b2630e0 100644 --- a/plugins/user-settings-backend/CHANGELOG.md +++ b/plugins/user-settings-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-user-settings-backend +## 0.1.9 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/plugin-auth-node@0.2.14 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.1.9-next.1 ### Patch Changes diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json index 6fdeee038d..25cc5ee812 100644 --- a/plugins/user-settings-backend/package.json +++ b/plugins/user-settings-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings-backend", "description": "The Backstage backend plugin to manage user settings", - "version": "0.1.9-next.1", + "version": "0.1.9", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md index 5fd080fe60..7240ceccd9 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-user-settings +## 0.7.3 + +### Patch Changes + +- 473db605a4f: Fix config schema definition. +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-app-api@1.8.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + ## 0.7.3-next.2 ### Patch Changes diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 98d688bcda..55672e358a 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings", "description": "A Backstage plugin that provides a settings page", - "version": "0.7.3-next.2", + "version": "0.7.3", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md index 33fcd6017c..ceaa496252 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-vault-backend +## 0.3.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + ## 0.3.1-next.1 ### Patch Changes diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index 0f4467ca80..26e30c91ad 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault-backend", "description": "A Backstage backend plugin that integrates towards Vault", - "version": "0.3.1-next.1", + "version": "0.3.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md index e5b521cdf9..7c2f0f0adf 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-vault +## 0.1.12 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/plugin-catalog-react@1.6.0 + - @backstage/core-components@0.13.1 + - @backstage/catalog-model@1.3.0 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.1.12-next.2 ### Patch Changes diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 813217876c..0cc1df1d6b 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault", "description": "A Backstage plugin that integrates towards Vault", - "version": "0.1.12-next.2", + "version": "0.1.12", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index fbd75b686f..641a0697e0 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-xcmetrics +## 0.2.38 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.3.0 + - @backstage/core-components@0.13.1 + - @backstage/core-plugin-api@1.5.1 + - @backstage/errors@1.1.5 + ## 0.2.38-next.1 ### Patch Changes diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 54dea03612..5f21dd0951 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-xcmetrics", "description": "A Backstage plugin that shows XCode build metrics for your components", - "version": "0.2.38-next.1", + "version": "0.2.38", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/yarn.lock b/yarn.lock index 82626c846e..39ada76723 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3787,7 +3787,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-client@^1.4.1, @backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client": +"@backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client": version: 0.0.0-use.local resolution: "@backstage/catalog-client@workspace:packages/catalog-client" dependencies: @@ -4088,110 +4088,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-components@npm:^0.12.3": - version: 0.12.5 - resolution: "@backstage/core-components@npm:0.12.5" - dependencies: - "@backstage/config": ^1.0.7 - "@backstage/core-plugin-api": ^1.5.0 - "@backstage/errors": ^1.1.5 - "@backstage/theme": ^0.2.18 - "@backstage/version-bridge": ^1.0.3 - "@material-table/core": ^3.1.0 - "@material-ui/core": ^4.12.2 - "@material-ui/icons": ^4.9.1 - "@material-ui/lab": 4.0.0-alpha.57 - "@react-hookz/web": ^20.0.0 - "@types/react-sparklines": ^1.7.0 - "@types/react-text-truncate": ^0.14.0 - ansi-regex: ^6.0.1 - classnames: ^2.2.6 - d3-selection: ^3.0.0 - d3-shape: ^3.0.0 - d3-zoom: ^3.0.0 - dagre: ^0.8.5 - history: ^5.0.0 - immer: ^9.0.1 - lodash: ^4.17.21 - pluralize: ^8.0.0 - prop-types: ^15.7.2 - qs: ^6.9.4 - rc-progress: 3.4.1 - react-helmet: 6.1.0 - react-hook-form: ^7.12.2 - react-markdown: ^8.0.0 - react-sparklines: ^1.7.0 - react-syntax-highlighter: ^15.4.5 - react-text-truncate: ^0.19.0 - react-use: ^17.3.2 - react-virtualized-auto-sizer: ^1.0.6 - react-window: ^1.8.6 - remark-gfm: ^3.0.1 - zen-observable: ^0.10.0 - zod: ~3.18.0 - peerDependencies: - "@types/react": ^16.13.1 || ^17.0.0 - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 8308c1b90247911f6cf22963b530cef169287f508ff29d159d0c83758134dd43bd5acd2113350690a46a02246bc05dca975bcc38325000aefb1c93c80e2f19c7 - languageName: node - linkType: hard - -"@backstage/core-components@npm:^0.13.0": - version: 0.13.0 - resolution: "@backstage/core-components@npm:0.13.0" - dependencies: - "@backstage/config": ^1.0.7 - "@backstage/core-plugin-api": ^1.5.1 - "@backstage/errors": ^1.1.5 - "@backstage/theme": ^0.2.19 - "@backstage/version-bridge": ^1.0.4 - "@date-io/core": ^1.3.13 - "@material-table/core": ^3.1.0 - "@material-ui/core": ^4.12.2 - "@material-ui/icons": ^4.9.1 - "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^20.0.0 - "@types/react": ^16.13.1 || ^17.0.0 - "@types/react-sparklines": ^1.7.0 - "@types/react-text-truncate": ^0.14.0 - ansi-regex: ^6.0.1 - classnames: ^2.2.6 - d3-selection: ^3.0.0 - d3-shape: ^3.0.0 - d3-zoom: ^3.0.0 - dagre: ^0.8.5 - history: ^5.0.0 - immer: ^9.0.1 - linkify-react: 4.1.1 - linkifyjs: 4.1.1 - lodash: ^4.17.21 - pluralize: ^8.0.0 - prop-types: ^15.7.2 - qs: ^6.9.4 - rc-progress: 3.4.1 - react-helmet: 6.1.0 - react-hook-form: ^7.12.2 - react-markdown: ^8.0.0 - react-sparklines: ^1.7.0 - react-syntax-highlighter: ^15.4.5 - react-text-truncate: ^0.19.0 - react-use: ^17.3.2 - react-virtualized-auto-sizer: ^1.0.11 - react-window: ^1.8.6 - remark-gfm: ^3.0.1 - zen-observable: ^0.10.0 - zod: ^3.21.4 - peerDependencies: - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 49c5301ff45c6f7516e78e80f46b25d2efb8d9ba510c7718f94c25b1f7d9b2869840db7ec896fbf9d083ceca8fa8cddf718a78eeb074993e95d474195f4bc9cd - languageName: node - linkType: hard - -"@backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": +"@backstage/core-components@^0.13.0, @backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": version: 0.0.0-use.local resolution: "@backstage/core-components@workspace:packages/core-components" dependencies: @@ -4266,6 +4163,56 @@ __metadata: languageName: unknown linkType: soft +"@backstage/core-components@npm:^0.12.3": + version: 0.12.5 + resolution: "@backstage/core-components@npm:0.12.5" + dependencies: + "@backstage/config": ^1.0.7 + "@backstage/core-plugin-api": ^1.5.0 + "@backstage/errors": ^1.1.5 + "@backstage/theme": ^0.2.18 + "@backstage/version-bridge": ^1.0.3 + "@material-table/core": ^3.1.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.57 + "@react-hookz/web": ^20.0.0 + "@types/react-sparklines": ^1.7.0 + "@types/react-text-truncate": ^0.14.0 + ansi-regex: ^6.0.1 + classnames: ^2.2.6 + d3-selection: ^3.0.0 + d3-shape: ^3.0.0 + d3-zoom: ^3.0.0 + dagre: ^0.8.5 + history: ^5.0.0 + immer: ^9.0.1 + lodash: ^4.17.21 + pluralize: ^8.0.0 + prop-types: ^15.7.2 + qs: ^6.9.4 + rc-progress: 3.4.1 + react-helmet: 6.1.0 + react-hook-form: ^7.12.2 + react-markdown: ^8.0.0 + react-sparklines: ^1.7.0 + react-syntax-highlighter: ^15.4.5 + react-text-truncate: ^0.19.0 + react-use: ^17.3.2 + react-virtualized-auto-sizer: ^1.0.6 + react-window: ^1.8.6 + remark-gfm: ^3.0.1 + zen-observable: ^0.10.0 + zod: ~3.18.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 8308c1b90247911f6cf22963b530cef169287f508ff29d159d0c83758134dd43bd5acd2113350690a46a02246bc05dca975bcc38325000aefb1c93c80e2f19c7 + languageName: node + linkType: hard + "@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.1, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" @@ -4395,28 +4342,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration-react@npm:^1.1.12": - version: 1.1.12 - resolution: "@backstage/integration-react@npm:1.1.12" - dependencies: - "@backstage/config": ^1.0.7 - "@backstage/core-components": ^0.13.0 - "@backstage/core-plugin-api": ^1.5.1 - "@backstage/integration": ^1.4.4 - "@backstage/theme": ^0.2.19 - "@material-ui/core": ^4.12.2 - "@material-ui/icons": ^4.9.1 - "@material-ui/lab": 4.0.0-alpha.61 - react-use: ^17.2.4 - peerDependencies: - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: c7ae5754f074f3cee020a5dfca50deecaccd0f5a8510a1446bb1070d7b9b6e32a82564cff77b98ef63b19fde5a29aceaf4b8e8662dd1a3ed00c408c8ae06dc65 - languageName: node - linkType: hard - -"@backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": +"@backstage/integration-react@^1.1.12, @backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": version: 0.0.0-use.local resolution: "@backstage/integration-react@workspace:packages/integration-react" dependencies: @@ -4447,22 +4373,6 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration@npm:^1.4.4": - version: 1.4.4 - resolution: "@backstage/integration@npm:1.4.4" - dependencies: - "@backstage/config": ^1.0.7 - "@backstage/errors": ^1.1.5 - "@octokit/auth-app": ^4.0.0 - "@octokit/rest": ^19.0.3 - cross-fetch: ^3.1.5 - git-url-parse: ^13.0.0 - lodash: ^4.17.21 - luxon: ^3.0.0 - checksum: 715310efe55b3c2fb93f5197bc1422917822a15a7550aae9d84b257bb0a6cff2bfab9a44296a977a56651499fbecd0ef31f954f92a62cc94bfbc7319d9a48c04 - languageName: node - linkType: hard - "@backstage/integration@workspace:^, @backstage/integration@workspace:packages/integration": version: 0.0.0-use.local resolution: "@backstage/integration@workspace:packages/integration" @@ -5626,7 +5536,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-common@^1.0.10, @backstage/plugin-catalog-common@^1.0.13, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": +"@backstage/plugin-catalog-common@^1.0.10, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-common@workspace:plugins/catalog-common" dependencies: @@ -5764,43 +5674,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.5.0": - version: 1.5.0 - resolution: "@backstage/plugin-catalog-react@npm:1.5.0" - dependencies: - "@backstage/catalog-client": ^1.4.1 - "@backstage/catalog-model": ^1.3.0 - "@backstage/core-components": ^0.13.0 - "@backstage/core-plugin-api": ^1.5.1 - "@backstage/errors": ^1.1.5 - "@backstage/integration": ^1.4.4 - "@backstage/plugin-catalog-common": ^1.0.13 - "@backstage/plugin-permission-common": ^0.7.5 - "@backstage/plugin-permission-react": ^0.4.12 - "@backstage/theme": ^0.2.19 - "@backstage/types": ^1.0.2 - "@backstage/version-bridge": ^1.0.4 - "@material-ui/core": ^4.12.2 - "@material-ui/icons": ^4.9.1 - "@material-ui/lab": 4.0.0-alpha.61 - "@types/react": ^16.13.1 || ^17.0.0 - classnames: ^2.2.6 - jwt-decode: ^3.1.0 - lodash: ^4.17.21 - material-ui-popup-state: ^1.9.3 - qs: ^6.9.4 - react-use: ^17.2.4 - yaml: ^2.0.0 - zen-observable: ^0.10.0 - peerDependencies: - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 0ffa1a9ecf142df389e2ecdbda1fae1718d4b65782654d99cd1de562520aae6ecc4677c15aff50a10fee9d9e89a35d2978e53da8f5f7129deef02c7044eb6e46 - languageName: node - linkType: hard - -"@backstage/plugin-catalog-react@workspace:^, @backstage/plugin-catalog-react@workspace:plugins/catalog-react": +"@backstage/plugin-catalog-react@^1.2.4, @backstage/plugin-catalog-react@^1.5.0, @backstage/plugin-catalog-react@workspace:^, @backstage/plugin-catalog-react@workspace:plugins/catalog-react": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-react@workspace:plugins/catalog-react" dependencies: @@ -7162,39 +7036,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-home@npm:^0.5.1": - version: 0.5.1 - resolution: "@backstage/plugin-home@npm:0.5.1" - dependencies: - "@backstage/catalog-model": ^1.3.0 - "@backstage/config": ^1.0.7 - "@backstage/core-components": ^0.13.0 - "@backstage/core-plugin-api": ^1.5.1 - "@backstage/plugin-catalog-react": ^1.5.0 - "@backstage/theme": ^0.2.19 - "@material-ui/core": ^4.12.2 - "@material-ui/icons": ^4.9.1 - "@material-ui/lab": 4.0.0-alpha.61 - "@rjsf/core-v5": "npm:@rjsf/core@5.6.0" - "@rjsf/material-ui": 5.6.0 - "@rjsf/utils": 5.6.0 - "@rjsf/validator-ajv8": 5.6.0 - "@types/react": ^16.13.1 || ^17.0.0 - lodash: ^4.17.21 - object-hash: ^3.0.0 - react-grid-layout: ^1.3.4 - react-resizable: ^3.0.4 - react-use: ^17.2.4 - zod: ~3.21.4 - peerDependencies: - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 0470e0d4848818c59fdf5c3765b769c22bf2b47e26b0ed0c80398baac6a8e1ac703e94152dc20498bfda790aec18a2af65605fcd8c6eb2e7ba7b85eb6ce80b69 - languageName: node - linkType: hard - -"@backstage/plugin-home@workspace:^, @backstage/plugin-home@workspace:plugins/home": +"@backstage/plugin-home@^0.5.1, @backstage/plugin-home@workspace:^, @backstage/plugin-home@workspace:plugins/home": version: 0.0.0-use.local resolution: "@backstage/plugin-home@workspace:plugins/home" dependencies: @@ -7957,7 +7799,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-common@^0.7.5, @backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common": +"@backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-common@workspace:plugins/permission-common" dependencies: @@ -7995,7 +7837,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-react@^0.4.12, @backstage/plugin-permission-react@workspace:^, @backstage/plugin-permission-react@workspace:plugins/permission-react": +"@backstage/plugin-permission-react@workspace:^, @backstage/plugin-permission-react@workspace:plugins/permission-react": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-react@workspace:plugins/permission-react" dependencies: @@ -9768,7 +9610,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/version-bridge@^1.0.3, @backstage/version-bridge@^1.0.4, @backstage/version-bridge@workspace:^, @backstage/version-bridge@workspace:packages/version-bridge": +"@backstage/version-bridge@^1.0.3, @backstage/version-bridge@workspace:^, @backstage/version-bridge@workspace:packages/version-bridge": version: 0.0.0-use.local resolution: "@backstage/version-bridge@workspace:packages/version-bridge" dependencies: From ee4e668f0df5b25f076917eb5ebc46424a564f08 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 16 May 2023 12:43:10 +0200 Subject: [PATCH 19/20] config-loader: avoid setTimeout in file watching tests Signed-off-by: Patrik Oldsberg --- .../src/sources/FileConfigSource.test.ts | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/config-loader/src/sources/FileConfigSource.test.ts b/packages/config-loader/src/sources/FileConfigSource.test.ts index c6980006c0..6479fb77c0 100644 --- a/packages/config-loader/src/sources/FileConfigSource.test.ts +++ b/packages/config-loader/src/sources/FileConfigSource.test.ts @@ -64,9 +64,10 @@ describe('FileConfigSource', () => { const source = FileConfigSource.create({ path: tmp.resolve('a.yaml') }); - setTimeout(() => { - tmp.write('a.yaml', 'a: 2'); - }, 10); + source + .readConfigData() + .next() + .then(() => tmp.write('a.yaml', 'a: 2')); await expect(readN(source, 2)).resolves.toEqual([ [{ data: { a: 1 }, context: 'a.yaml', path: tmp.resolve('a.yaml') }], @@ -130,9 +131,10 @@ describe('FileConfigSource', () => { substitutionFunc: async name => (name === 'MY_VALUE' ? '6' : '7'), }); - setTimeout(() => { - tmp.write('x.yaml', '${MY_OTHER_VALUE}'); - }, 10); + source + .readConfigData() + .next() + .then(() => tmp.write('x.yaml', '${MY_OTHER_VALUE}')); await expect(readN(source, 2)).resolves.toEqual([ [{ data: { a: '6' }, context: 'a.yaml', path: tmp.resolve('a.yaml') }], @@ -150,9 +152,10 @@ describe('FileConfigSource', () => { path: tmp.resolve('a.yaml'), }); - setTimeout(() => { - tmp.write('x.txt', '9'); - }, 10); + source + .readConfigData() + .next() + .then(() => tmp.write('x.txt', '9')); await expect(readN(source, 2)).resolves.toEqual([ [{ data: { a: '8' }, context: 'a.yaml', path: tmp.resolve('a.yaml') }], From 29820706548105dad0c089256b361a6f8b3b9aed Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 16 May 2023 13:10:33 +0200 Subject: [PATCH 20/20] config-loader: back to setTimeout with bigger margin Signed-off-by: Patrik Oldsberg --- .../src/sources/FileConfigSource.test.ts | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/packages/config-loader/src/sources/FileConfigSource.test.ts b/packages/config-loader/src/sources/FileConfigSource.test.ts index 6479fb77c0..61cdeed272 100644 --- a/packages/config-loader/src/sources/FileConfigSource.test.ts +++ b/packages/config-loader/src/sources/FileConfigSource.test.ts @@ -64,10 +64,9 @@ describe('FileConfigSource', () => { const source = FileConfigSource.create({ path: tmp.resolve('a.yaml') }); - source - .readConfigData() - .next() - .then(() => tmp.write('a.yaml', 'a: 2')); + setTimeout(() => { + tmp.write('a.yaml', 'a: 2'); + }, 100); await expect(readN(source, 2)).resolves.toEqual([ [{ data: { a: 1 }, context: 'a.yaml', path: tmp.resolve('a.yaml') }], @@ -131,10 +130,9 @@ describe('FileConfigSource', () => { substitutionFunc: async name => (name === 'MY_VALUE' ? '6' : '7'), }); - source - .readConfigData() - .next() - .then(() => tmp.write('x.yaml', '${MY_OTHER_VALUE}')); + setTimeout(() => { + tmp.write('x.yaml', '${MY_OTHER_VALUE}'); + }, 100); await expect(readN(source, 2)).resolves.toEqual([ [{ data: { a: '6' }, context: 'a.yaml', path: tmp.resolve('a.yaml') }], @@ -152,10 +150,9 @@ describe('FileConfigSource', () => { path: tmp.resolve('a.yaml'), }); - source - .readConfigData() - .next() - .then(() => tmp.write('x.txt', '9')); + setTimeout(() => { + tmp.write('x.txt', '9'); + }, 100); await expect(readN(source, 2)).resolves.toEqual([ [{ data: { a: '8' }, context: 'a.yaml', path: tmp.resolve('a.yaml') }],