Backstage
v1.56.0CI/CD & App DeliveryACTION 1CHECK 14PLAN 7OTHER 256
백엔드, 명령줄 도구, 문서, 카탈로그, 검색, 플러그인 기능을 넓히면서 API와 데이터베이스, 인증, 설정, 기본 동작에도 호환성 변경이 포함된 릴리스입니다. 관련 기능을 사용하는 환경은 마이그레이션과 동작 검증이 필요하며, 신뢰성, 성능, 정확성, 의존성 개선과 보안 취약점 대응도 함께 반영되었습니다.
조치 필요 (1)
security
nodemailer버전 10 업데이트이전 버전의 보안 취약점에 대응하기 위해
nodemailer를 버전 10으로 업데이트했습니다.
영향 확인 (14)
breaking
FilterPredicate루트 객체 제한FilterPredicate를 사용하는 경우에 적용됩니다.FilterPredicate의 predicate 루트에는 이제 객체만 허용됩니다.breaking
usernameMatchingUserEntityName로그인 확인자 제거usernameMatchingUserEntityName로그인 확인자를 사용하는 경우에 적용됩니다.usernameMatchingUserEntityName로그인 확인자가 제거되었습니다.breaking서비스 구현의
instance ID제공 요구서비스의 사용자 지정 구현이나 모의 객체를 사용하는 경우에 적용됩니다.
서비스의 사용자 지정 구현과 모의 객체는 이제
instance ID를 제공해야 합니다.breaking순차 무중단 업그레이드에서 마이그레이션 적용 제한
순차 방식의 무중단 업그레이드를 수행하는 경우에 적용됩니다.
이 마이그레이션은 순차 방식의 무중단 업그레이드에 포함해 적용할 수 없습니다.
breaking
catalog backend버전 호환성 요구Backstage 1.49 이상에서 제공하는
catalog backend를 사용하는 경우에 적용됩니다.Backstage 1.49 이상에서 제공하는
catalog backend가 필요합니다.breaking스티칭 간격 및 임대 기간 값 검증
스티칭 폴링 간격이나 임대 기간을 설정하는 경우에 적용됩니다.
0 이하로 설정한 스티칭 폴링 간격과 임대 기간은 시작할 때 거부됩니다.
breakingSignals WebSocket 사용자 토큰 인증
Signals WebSocket 엔드포인트를 외부에 공개하는 경우에 적용됩니다.
Signals WebSocket 엔드포인트가 유효한 사용자 신원 토큰을 요구합니다.
breaking루트 인스턴스 메타데이터의 고유 ID 요구
루트 인스턴스 메타데이터 서비스의 사용자 지정 구현이나 모의 객체를 사용하는 경우에 적용됩니다.
루트 인스턴스 메타데이터 서비스의 사용자 지정 구현과 모의 객체는 실행 중인 백엔드 인스턴스의 수명 동안 변하지 않는 전역 고유 ID를 제공해야 합니다.
breaking
MenuSection의disabledKeys제거disabledKeys와 함께MenuSection을 사용하는 경우에 적용됩니다.MenuSection이 더 이상disabledKeys를 허용하지 않습니다.breaking로그인 확인자
usernameMatchingUserEntityName제거usernameMatchingUserEntityName로그인 확인자를 사용하는 경우에 적용됩니다.usernameMatchingUserEntityName로그인 확인자가 제거되었습니다.breaking테이블 열
ref의entity_ref변경테이블의
ref열을 사용하는 경우에 적용됩니다.테이블의
ref열 이름이entity_ref로 바뀌었습니다.breaking데이터베이스 연결 유지 기본값 변경
backend.를database. keepalive true로 설정하지 않은 경우에 적용됩니다.플러그인별 데이터베이스 연결 유지 쿼리를 기본적으로 더 이상 실행하지 않으며, PostgreSQL과 MySQL 연결 풀의 기본 최소 크기를 0으로 변경했습니다. 설정한 제한 시간이 지나면 유휴 연결을 정리하고, 명시적으로 설정한 최소 풀 크기는 유지합니다. 주기적인 쿼리를 계속 실행하려면
backend.를 설정해야 합니다.database. keepalive: true breaking스티칭 설정의 양수 값 검증
스티칭 폴링 간격이나 임대 기간을 설정하는 경우에 적용됩니다.
0 이하로 설정한 스티칭 폴링 간격과 임대 기간은 시작할 때 거부됩니다.
breakingSignals WebSocket 연결 인증 강화
Signals WebSocket 엔드포인트를 외부에 공개하는 경우에 적용됩니다.
Signals WebSocket 엔드포인트는 요청된 WebSocket 프로토콜의 어느 위치에든 포함된 유효한 사용자 신원 토큰을 요구합니다. 토큰이 없거나 유효하지 않거나 서비스 토큰이면 연결을 거부하며, 인증되지 않은 게스트 연결도 더 이상 허용하지 않습니다.
미리 준비 (7)
deprecated
getCatalogFilters사용 중단 예정getCatalogFilters를 사용하는 경우에 적용됩니다.getCatalogFilters가 사용 중단 예정으로 지정되었습니다.deprecated
serve:mkdocs및--mkdocs-parameter-*사용 중단 예정serve:mkdocs또는--mkdocs-parameter-*플래그를 사용하는 경우에 적용됩니다.serve:mkdocs와--mkdocs-parameter-*플래그를 사용하면 사용 중단 예정 경고가 출력됩니다.deprecated원시 토큰 출력 사용 중단 예정
원시 토큰 출력을 사용하면서
variableKey를 설정하지 않은 경우에 적용됩니다.variableKey를 사용하지 않을 때 원시 토큰 출력이 사용 중단 예정으로 지정되었습니다.deprecated
totalItems옵션 사용 중단 예정totalItems를 설정하는 경우에 적용됩니다.totalItems옵션이 사용 중단 예정으로 지정되었습니다.deprecated
serve:mkdocs및--mkdocs-parameter-*경고serve:mkdocs또는--mkdocs-parameter-*플래그를 사용하는 경우에 적용됩니다.serve:mkdocs와--mkdocs-parameter-*플래그를 사용하면 사용 중단 예정 경고가 출력됩니다.deprecated
StreamEntitiesRequest.사용 중단 예정totalItems totalItems를 사용하는 경우에 적용됩니다.StreamEntitiesRequest의totalItems옵션이 사용 중단 예정으로 지정되었고 무시됩니다.deprecated원시 토큰 출력의
variableKey전환원시 토큰 출력을 사용하면서
variableKey를 설정하지 않은 경우에 적용됩니다.variableKey를 사용하지 않을 때 원시 토큰 출력이 사용 중단 예정으로 지정되었습니다.
그 외 기록된 변경 256건 전체value changes 131 · fixes 64 · additions 43 · constraints 11 · renames 4 · defaults 3
value changes (131)
- An
EntityOrderFilterthat orders by a field that some entities lack now excludes those entities MenuSectionno longer acceptsdisabledKeys- now retries network failures and 5xx responses for up to about 15 seconds
- Improved link resolution performance
- now use the page header provided by the app
@backstage/catalog-modelnow uses version 4 ofzod- Config schemas now compile in roughly half the time
- Improved database event cleanup in the events backend under large backlogs.
- Hardened return URL validation in the OAuth redirect flow.
- Google IAP public verification keys are now cached according to their cache headers.
- The
auth.configuration is now visible to frontend plugins.providers. guest - Notification payload metadata is now persisted and returned when reading notifications.
- Updated
nodemailerto version 10 - now returns partial results when some plugin sources fail.
- now show help when a command group is invoked without a subcommand, and wait for output to be flushed before exiting.
- Improved code splitting for frontend module federation remotes.
- Report checks in
@backstage/repo-toolsnow show a diff when a report is out of date. - Fixed the Home page path override in the
create-apptemplate. - Updated React Aria dependencies to React Aria Components 1.22.0, React Aria 3.53.0, and React Stately 3.51.0.
- Programmatic clicks on Checkbox and Switch labels no longer toggle their selection.
- an
EntityOrderFilterthat orders by a field that some entities lack now excludes those entities from the result - TechDocs now uses the default
NotFoundErrorPagewhen documentation is missing - Improved handling of mapping-style Markdown extension configuration.
- Updated dependency
js-yamlto^5..×30. 0 - Updated dependency
infinispanto^0..16. 0 streamEntitiesno longer asks the catalog backend to compute the total number of matching items, since that count is never part of the streamed result.- Switched to version 4 of
zodfor internal validation. Error messages for invalid catalog model layer operations now use the updatedzodwording. This package no longer pulls in version 3 ofzod. If your own packages usezodwithout declaring it as a dependency, they may now get version 4 instead, so make sure to add it to theirpackage.explicitly.json - The
actions listcommand now returns partial results when some plugin sources fail, instead of failing entirely. Failed sources are reported as warnings. - Updated dependency
webpackto~5..111. 0 - Improved code splitting for frontend module federation remotes to reduce unnecessary downloads of unrelated lazy components from the same dependency scope.
- Switched to version 4 of
zodfor internal validation. Validation errors for invalid templates now use the updated, more descriptivezodwording. - Config schemas now compile in roughly half the time, by skipping Ajv's code optimizer. The compiled validators only run a few times per process, so the optimized code never paid for itself. This speeds up backend startup, which compiles the full config schema, for example to find the secret config values to redact from logs.
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected]×2
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Updated generated applications to use the latest Jest 30 release.
- Pinned Yarn core in newly generated apps to avoid installation failures from a broken upstream release.
- Updated dependencies - @backstage/[email protected]
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- The permission check for extension
ifpredicates during app startup now retries network failures and 5xx responses, for up to about 15 seconds, instead of failing the whole app on the first error. - Improved link resolution performance by reusing route matches for recently visited locations.
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- The
useRouteRefhook now resolves the route again once the app has been finalized, so that elements rendered before finalization, such asapp/root.extensions, can link to pages instead of gettingelements undefined. - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Azure DevOps repository files now resolve to an edit URL when used by integrations such as TechDocs.
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]×2
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Release manifests now include requirements such as supported Node.js versions when that information is available from the release.
- When an API, CLI, SQL, or knip report is out of date in CI, the error output now shows a diff of the changes that need to be committed instead of printing the full expected report.
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- Updated React Aria dependencies to the October 2026 release.
- stopped loading the default API implementations just to install the default icons.
- - 4e7a710: Updated React Aria dependencies to the October 2026 release.×2
- b96ec9e: Cache Google IAP public verification keys according to the response cache headers to reduce repeated key requests during authentication.
- c2ea521: Change visibility to auth.providers.guest configuration key to be visible by frontend plugins to align with other authentication providers.
- 9724edd: Hardened return URL validation in the OAuth redirect flow. Failed sign-in attempts now return to the configured app URL with the error message, including when the return URL is invalid.
- The catalog export button now respects filters that implement
getCatalogQuery. - Use EntityDisplayName for hierarchy links in BUI entity header in order to display titles
- Improved large entity provider mutations by yielding to the event loop while preparing database changes.
- Reduce repeated work for entities that fail stitching by gradually increasing retry delays with jitter.
- Improve responsiveness to other requests while reading large sets of entities with field selection, without reducing page sizes.
- Like full-entity responses, projected list responses may now be streamed without a
Content-Lengthor automatically generatedETagheader. - Improved the performance and planner stability of orphan entity cleanup on large PostgreSQL catalogs.
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - 916e5b2: Improved the performance of LDAP organization ingestion, especially for large directories, without changing the resulting catalog entities.
- - 1a20364: Improved large LDAP organization refreshes by yielding to the event loop while resolving relations.
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - cc7eccf: The catalog graph page in the new frontend system no longer renders its own legacy header, and instead uses the page header provided by the app. Apps that use the old frontend system are not affected.
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - 3a0ac14: The catalog import page in the new frontend system no longer renders its own legacy header, and instead uses the page header provided by the app. Apps that use the old frontend system are not affected.
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected]×2
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected]
- - 02fd3bf: Improve database event cleanup under large backlogs and speed up reading events for subscriptions with many retained events.
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]×3
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected]×3
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - b3292fc: Declare the existing per-cluster
assumeRoleandexternalIdoptions in the configuration schema so schema-generated configuration forms can expose AWS IAM role authentication settings. External IDs are marked as secrets. - - 76ac6ed: Updated dependency
js-yamlto^5..0. 0 - - 8ba34e8: Persist notification payload metadata for user notifications and broadcasts, and return it when reading notifications. Re-sending a scoped notification replaces its metadata, or clears it when the new payload omits metadata.
- Updated
nunjitsuto^0..6. 2 - - 33ff9ed: Updated dependency
@backstage-community/plugin-explore-commonto^0..14. 0 - - b8e865b: The signals client now shares one WebSocket connection across simultaneous subscriptions and does not connect or retry when no identity token is available.
- - e956084: Use the backend instance ID to identify the event subscription, allowing deployments to control how Signals instances fan out events.
- - Updated dependencies - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected]
- - Updated dependencies - @backstage/[email protected] - @backstage/[email protected]
fixes (64)
- Successfully processed entities no longer remain unavailable if stitch scheduling is interrupted
- Entities no longer disappear from filtered and sorted catalog queries after a database error during stitching
Comboboxkeyboard selection while filtering has been fixeduseRouteRefnow resolves routes again after finalization- Fixed the catalog entity list rewriting the URL on every render
- Fixed catalog processing error messages to report stable processor names in minified builds.×2
- Fixed the Gitea entity provider registering locations against a hardcoded
mainbranch - Reading a number from an empty or whitespace-only config value now fails with a clear error instead of returning
0. - fixed AWS RDS IAM authentication tokens being reused after their signing credentials expire
- Fixed
serializeErrorto strip stack traces from all nested error causes. - The selected sign-in provider is no longer cleared when a sign-in loader is cancelled.
- Fixed protected app sign-in returning a 404 when the sign-in handoff is repeated.
- Fixed long words in toast notifications overlapping the close button.
- Fixed Azure DevOps downloads to use the requested branch or tag.
- Fixed importing
@backstage/integrationfrom ESM projects. - now throws a clear
ConflictErrorwhen the target repository already exists. - Fixed a regression where scaffolder step values consisting of a single template statement block, such as
ifconditions, were rendered as strings instead of booleans. - Fixed Elasticsearch search queries intermittently failing when a collator finishes indexing.
- Fixed PostgreSQL search highlighting with delimiters that need quoting.
- Fixed TechDocs asset caching on reused HTTP connections.
- Fixed TechDocs rejecting
mkdocs.files that use Material for MkDocs emoji and superfences configurationyml - Fixed the
no-mixed-plugin-importslint rule silently reporting nothing - Fixed root
setupFilesAfterEnvJest configuration being shared between workspace packages - Fixed
Comboboxkeyboard selection while filtering. - Fixed the catalog entity list re-writing the URL on every render
- Fixed TechDocs addons silently not rendering in apps using the new frontend system
- Fixed TechDocs asset caching on reused HTTP connections to avoid listener leaks and cross-request response corruption.
- Fixed TechDocs allowing
custom_iconspaths inmkdocs.that resolve outside the documentation input directory.yml - Fixed TechDocs generation rejecting
mkdocs.files that use the emoji indexes and generators or theyml pymdownx.custom fence formatssuperfences - Fixed Material UI styles for TechDocs addons in module-federated applications.
- a lazy addon no longer hides the surrounding reader while it loads.
- Prevented TechDocs content from briefly appearing before page styles load.
- Fixed AWS RDS IAM authentication tokens being reused after their signing credentials expire, which could cause database connection failures when using temporary AWS credentials.
- Fixed the conversion of legacy filters that happens when a request has both a
filterand aquery, so that it matches the semantics of the legacy filter query parameter. Empty filters no longer turn into a predicate that matches nothing, empty records no longer match everything, and string values take precedence overCATALOG_FILTER_EXISTSfor the same key. - Fixed
backstage-cli pm verify-patchesfailing to load unless projects installed the Yarn CLI package separately. jest-cli,jest-runtimeand the default Node.js test environment are now loaded through the installedjestpackage, so tests also run with strictnode_moduleslayouts. An unsupported Jest version, or a missingjest, now fails with a clear error instead of a module resolution error.- Fixed
setupFilesAfterEnvfrom the rootpackage.Jest configuration being shared between workspace packages, which caused each package'sjson src/setupTestsfile to also be added to every other package. - Fixed CommonJS frontend test execution with ESM dependencies on Node.js 24.
- Commands run through
runClinow wait forstdoutandstderrto be flushed before exiting, so large command output is no longer truncated on platforms where writes tostdoutandstderrare asynchronous. - Fixed CLIs created with
runClisilently exiting when the root or a command group is invoked without a subcommand. They now display help for that level and complete successfully. - Reading a number from a configuration value that is an empty or whitespace-only string now fails with a clear conversion error, instead of silently returning
0. Numeric strings, including ones with surrounding whitespace such as' 42 ', continue to be parsed as expected. - Fixed the
Connectiontype so thatauthis a union of method variants instead of an array when no specific auth method is provided. - Declared the dependencies of internally bundled code so that the package works with strict
node_moduleslayouts. - Stop clearing the selected provider from
localStoragewhen a sign-in loader is cancelled. Only clear it when the loader actually fails. - Fixed default landing page configuration in the app template so the Home page path override is inside the existing
page:homeblock. - Fixed
serializeErrorso that stack traces are stripped from all nested error causes when stacks are not requested, not just the first-level cause. - Fixed Azure DevOps file and archive downloads to use the requested branch or tag, including when checking whether a repository tree has changed. Branches and tags with the same name are now distinguished.
- Bitbucket Cloud OAuth access tokens returned by
getBitbucketCloudOAuthTokenare now cached separately for each set of OAuth client credentials. Previously a single token was cached globally, which could cause the wrong token to be used when more than one Bitbucket Cloud integration was configured or when OAuth credentials were rotated. - Fixed importing this package from ECMAScript module (ESM) projects, which failed since 2.1.0 with an error saying that
lodashdoes not provide an export namedtrimEnd. - Fixed CLI report generation failing when the
FORCE_COLORenvironment variable is set. - Declared the dependencies of internally bundled code so that the package works with strict
node_moduleslayouts - Fixed long words in toast titles and descriptions overflowing the notification and overlapping the close button.
- - c55505e: Fix protected app sign-in returning a 404 when an authenticated browser repeats the sign-in handoff for the same user.
- Fixed an issue where successfully processed entities could remain unavailable if stitch scheduling was interrupted.
- Entity and location queries with a primitive value at the root of the filter predicate are now rejected with an "Invalid query" error, rather than "Query must be an object".
- Pending stitching work is no longer lost when entities are deleted and re-added
- Fixed entities disappearing from filtered and sorted catalog queries after a database error during stitching.
- PostgreSQL and MySQL deadlocks trigger prompt, bounded retries of the entire write transaction
- - f181c5f: Fixed the Gitea entity provider registering catalog-info.yaml locations against a hardcoded 'main' branch instead of each repository's actual default branch.
- - 6e08d65: Fixes a regression where scaffolder step values consisting of a singular template statement block (ex.
if: "{% if parameters.), were rendered as the stringsfoo == 'bar' %}true{% else %}false{% endif %}" "true"and"false"instead of their boolean values. This caused steps withifconditions to always run. Step values with a single statement block that renders nothing, such as{% if false %}x{% endif %}, are once again left out of the action input instead of being passed as an empty string. - - 06128be: Throw a
ConflictErrorwith a clear message whenpublish:gitlabis called and the target repository already exists, instead of letting the GitLab API return aGitbeakerRequestErrorwith a raw JSON body such as{"name":["has already been taken"]}. - - 2153e90: Fixed search queries intermittently failing with a 500 error when a collator finished indexing. The index that the search alias pointed to before the rotation is no longer deleted immediately, so queries already running against it can complete. It is instead removed during the next indexing run for that document type. Note that this means the previous index is now retained between runs, so search storage usage per document type is roughly doubled. Also improved error reporting for failed search queries. An index that disappears while a query is running is now reported as a missing index, and other query failures now include the underlying cause in the logs instead of
undefined. - - 7535616: Fixed PostgreSQL search highlighting when configured delimiters or selection tags contain punctuation that requires quoting.
additions (43)
- has a new
getCatalogQuerymethod - Three new CLI modules provide domain-oriented commands that talk directly to the corresponding plugin APIs
@backstage/cli-module-catalog:catalog list,catalog get,catalog validate,catalog register,catalog unregister@backstage/cli-module-scaffolder:template list,template execute,template dry-run@backstage/cli-module-search:search,docs search- This introduces an
--engineflag in the TechDocs CLI, an engine configuration map, a generator registry - A new
withoutFeedbackLinkoption - registers a
get-techdocs-metadataaction - Backends created with
createBackendnow provide the experimental connections service by default. - provides a
Featured Templateshome page widget - a swappable
UserAvatarcomponent - have a new
variableKeyinput - A new
themeCSS cascade layer - Added
AppLifecycleApi - Added a
backend.configuration optionlogger. redactAllowlist - Added bounded retries for transient Cloud SQL connection failures
- Added a service-authenticated action registry status endpoint
- Added a
defaultCloseDelayMsoption toSubmenuOptions. - Added a
--fixmode tobackstage-cli pm verify-patches. - Added an
instanceIdoption tocreateSpecializedBackend. - Added experimental
declareConnectionandconnectionsServiceRefexports - Add intent-based CLI modules for catalog, scaffolder, and search.×2
- A new
AnyFilterPredicatetype describes predicates that may also be primitive values at the root - Introduces
--engineflag, engine config map, generator registry withbackstage.annotation support,io/techdocs-engine enginefield intechdocs_metadata.,json serve:rawcommand, and live-reload adapter interface. - Added a
themeCSS cascade layer betweencomponentsandutilities. - Added a
source_keycolumn and aUNIQUE(source_key, entity_ref)constraint - Added
getCatalogQuerytoEntityFilter - Added a swappable
UserAvatarcomponent - Added a
Featured Templateshomepage widget - Added
withoutFeedbackLinkprop topage:techdocs/readerandentity-content:techdocsextensions - Added a
get-techdocs-metadataaction to the TechDocs backend plugin - Added a service-authenticated action registry status endpoint that reports whether a plugin provides actions without exposing action metadata.
- Added an
instanceIdoption tocreateBackend, allowing deployments to use an externally provided backend instance identifier. Each backend instance uses a random UUID by default. - Added bounded retries for transient failures while initializing Cloud SQL database connections.
- Added support for
backend.configuration option, which allows specific secret values to pass through log redaction when they are known to be safe to log.logger. redactAllowlist - Added a conservative
--fixmode tobackstage-cli pm verify-patchesthat can update project-owned Backstage package patches when an automated release upgrade leaves them pinned to older versions. The repair requires Yarn 3 or later. - Added
defaultCloseDelayMsoption toSubmenuOptionsto configure a delay before a submenu closes. - Provided an implementation of
AppLifecycleApiand updated the app preparation and finalization process to utilize this API. - Added
AppLifecycleApiandappLifecycleApiRef, which let you check whether the app has been finalized and subscribe to changes in its lifecycle. - - a18df8f: Added optional
app.allowlists for config key paths and extension IDs exposed to unauthenticated users of protected apps. Authenticated users retain access to all frontend-visible configuration, and existing behavior is unchanged unless filtering is enabled.publicConfig - - fe51d40: Added a secure
variableKeyinput togitlab:projectAccessToken:createandgitlab:projectDeployToken:createactions. When provided, the generated token is stored directly as a masked GitLab CI/CD variable instead of being exposed in task outputs and checkpoint state. - - 45b0b89: Added a new
techdocs.permission, available from theactions. read /alphaentry point, which controls access to the TechDocs actions registered with the Actions Registry.
constraints (11)
EntityTagFilterwith multiple tags now requires all of them- Added Bitbucket Cloud support for bearer API tokens.
- removed
custom_iconspaths that resolve outside the docs directory - Declared the per-cluster
assumeRoleandexternalIdoptions in the Kubernetes backend configuration schema. - now reports named imports from
lodash, which break ESM builds. - Several packages now work with strict
node_moduleslayouts. - The
no-mixed-plugin-importsrule now also applies when the repository is checked out below a directory whose name starts with a dot, such as~/..worktrees/my-repo - Update Bitbucket Cloud Authentication logic to support bearer API token
- CLI API reports now support help output with separate groups and commands sections, including commands nested within groups.
- Updated SQL report generation to support newer Knex releases.
- 0c9d72c: Update Bitbucket Cloud Authentication logic to support bearer API token
renames (4)
- The built-in generator is now registered as
mkdocs, withtechdocskept as an alias - Updated the
plugin-web-librarytemplate to use@backstage/uiinstead of the deprecated@material-ui/core. - - 66f8cf8: Replace deprecated
createPermissionIntegrationRouterAPI call withpermissionsRegistry - - 298f908: Replaced the unmaintained
react-relative-timedependency with an internal component based onluxon.
defaults (3)
- The backend no longer issues periodic per-plugin database keepalive queries by default, and the default minimum PostgreSQL and MySQL connection pool size is now zero.
- The
--bui-bg-apptoken now follows the page'scolor-schemeuntil a theme mode is set. - Backends created with
createBackendnow provide the experimental connections service by default. Custom backends can installconnectionsServiceFactoryfrom@backstage/backend-defaults/alpha.
조치가 필요한 릴리스가 나왔을 때 주간 메일로 알려드립니다. 이번 릴리스의 보안 패치와 브레이킹 체인지 같은 것들입니다.