Backstage
v1.56.0CI/CD & App DeliveryACTION 1CHECK 14PLAN 7OTHER 256
新しいバックエンド、CLI、TechDocs、カタログ、検索、プラグイン機能を含む、機能範囲の広いリリースです。既存の構成によってはAPI、データベース、認証、設定、デフォルト動作の変更に伴う移行と検証が必要です。依存関係、性能、正確性、信頼性の改善に加え、`nodemailer`の更新とSignals WebSocket認証の強化も含まれています。
要対応 (1)
security
nodemailerのバージョン10への更新セキュリティ上の脆弱性に対応するため、
nodemailerがバージョン10へ更新されました。
影響確認 (14)
breaking
FilterPredicateの述語ルートをオブジェクトに限定FilterPredicateを使用している場合に該当します。FilterPredicateの述語ルートで受け付ける値がオブジェクトだけになりました。breaking
usernameMatchingUserEntityNameサインインリゾルバーの削除usernameMatchingUserEntityNameサインインリゾルバーを使用している場合に該当します。usernameMatchingUserEntityNameサインインリゾルバーが削除されました。breakingサービスのカスタム実装とモックに
instance IDを要求サービスのカスタム実装またはモックを使用している場合に該当します。
サービスのカスタム実装とモックで、
instance IDの提供が必要になりました。breaking
ingestion_mark_entitiesマイグレーションの適用条件変更ローリング方式の無停止アップグレードを実施する場合に該当します。
ingestion_mark_entitiesのマイグレーションは、ローリング方式の無停止アップグレードの一部として適用できなくなりました。source_keyとentity_refを使用する構成では、アップグレード手順の確認が必要です。breakingカタログバックエンドの必要バージョン変更
Backstage 1.49以降のカタログバックエンドを使用している場合に該当します。
Backstage 1.49以降のカタログバックエンドが必要になりました。
breakingスティッチング設定の起動時検証
スティッチングのポーリング間隔またはリース期間を設定している場合に該当します。
スティッチングのポーリング間隔とリース期間に、0以下の値を設定すると起動時に拒否されるようになりました。
breakingSignals WebSocketエンドポイントの認証要件変更
Signals WebSocketエンドポイントを公開している場合に該当します。
Signals WebSocketエンドポイントで、有効なユーザーIDトークンが必要になりました。
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エンドポイントで、有効なユーザーIDトークンが必要になりました。トークンは要求されたWebSocketプロトコルのどこにでも含められます。トークンがない接続、無効なトークンの接続、サービス用トークンを使う接続は拒否され、未認証のゲスト接続も受け付けなくなりました。
事前準備 (7)
deprecated
getCatalogFiltersの非推奨化getCatalogFiltersを使用している場合に該当します。getCatalogFiltersは非推奨になりました。deprecatedMkDocs関連コマンドとフラグの非推奨警告
serve:mkdocsまたは--mkdocs-parameter-*フラグを使用している場合に該当します。serve:mkdocsと--mkdocs-parameter-*フラグの実行時に、非推奨警告が出力されるようになりました。deprecatedトークンの生出力の非推奨化
トークンの生出力を使用し、
variableKeyを設定していない場合に該当します。variableKeyを設定しない場合、トークンの生出力は非推奨になりました。deprecated
totalItemsオプションの非推奨化totalItemsを設定している場合に該当します。totalItemsオプションは非推奨になりました。deprecatedMkDocs関連機能の非推奨警告
serve:mkdocsまたは--mkdocs-parameter-*フラグを使用している場合に該当します。serve:mkdocsと--mkdocs-parameter-*フラグの実行時に、非推奨警告が出力されるようになりました。deprecated
StreamEntitiesRequest.の非推奨化totalItems totalItemsを使用している場合に該当します。StreamEntitiesRequestのtotalItemsオプションは非推奨となり、無視されるようになりました。deprecatedトークンの生出力の非推奨化
トークンの生出力を使用し、
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.
対応が必要なリリースが出たときに、週次メールでお知らせします。 今回のセキュリティパッチと破壊的変更も、その一例です。