74233 Commits

Author SHA1 Message Date
Fredrik Adelöw 445aefd4b9 Address PR review comments
- Remove unused deps @backstage/filter-predicates and zod-validation-error
  from catalog-model
- Deduplicate defaultCatalogEntityModel by re-exporting from the single
  source in model/defaultCatalogEntityModel.ts
- Fix typos: "Retuns"/"epxressed", "Obviopusly", "recorsively"
- Use domain-prefixed layer ID for scaffolder template model

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-14 13:41:22 +02:00
Fredrik Adelöw 85ed75ee93 fixup! Add summary types and listing methods to CatalogModel
fixup! Add summary types and listing methods to CatalogModel

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-14 13:31:13 +02:00
Fredrik Adelöw 31290ca25f Add summary types and listing methods to CatalogModel
Introduce CatalogModelKindSummary, CatalogModelRelationSummary,
CatalogModelAnnotationSummary, CatalogModelLabelSummary, and
CatalogModelTagSummary as reduced views of the full model data.

Add listKinds(), listRelations(), and getMetadata() methods to
CatalogModel for retrieving these summaries. Add a new action for
fetching a markdown-formatted catalog model description, useful for
informing LLMs about the catalog structure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-14 13:27:33 +02:00
dependabot[bot] 878c421766 chore(deps): bump follow-redirects from 1.15.11 to 1.16.0
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.11...v1.16.0)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-version: 1.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 10:32:58 +00:00
Patrik Oldsberg d3627319a1 Merge pull request #33836 from backstage/rugvip/explore-standard-schema-decoupling
frontend-plugin-api: decouple zod dependency using Standard Schema
2026-04-14 12:27:53 +02:00
Patrik Oldsberg 1d4c1a8306 Merge pull request #33885 from Parsifal-M/patch/prefer-title
MembersListCard displayName -> title -> name
2026-04-14 10:27:35 +02:00
Fredrik Adelöw 742165a053 Merge pull request #33030 from backstage/sennyeya/mem-leak
fix(openapi-jest-utils): memory leak in proxy clean up
2026-04-14 10:23:29 +02:00
Patrik Oldsberg 05e7b1fe38 Update .changeset/clean-weeks-beg.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-04-14 10:14:47 +02:00
Peter Macdonald 64c9a20004 displayname, title, name order of preference for the memberslistcard
Signed-off-by: Peter Macdonald <peterm4c@pm.me>
2026-04-14 10:06:42 +02:00
dependabot[bot] 532175a0d6 chore(deps): bump follow-redirects from 1.15.6 to 1.16.0 in /microsite
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.6 to 1.16.0.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.6...v1.16.0)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-version: 1.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-14 01:28:37 +00:00
Patrik Oldsberg 4d98196561 Merge pull request #33880 from backstage/rugvip/remove-unused-application-json-constant
kubernetes-backend: remove unused APPLICATION_JSON constant
2026-04-14 00:55:47 +02:00
Patrik Oldsberg 11d7130ff4 Merge pull request #33878 from backstage/rugvip/harmonize-phantom-t-getter
backend-plugin-api: harmonize phantom .T getter behavior
2026-04-14 00:54:04 +02:00
Patrik Oldsberg 078beccb49 Merge pull request #33877 from backstage/rugvip/deduplicate-test-readiness-polling
backend-test-utils: deduplicate test readiness-polling helpers
2026-04-14 00:52:46 +02:00
Patrik Oldsberg c40568f651 Simplify phantom T props to plain null values instead of getters
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-14 00:06:53 +02:00
Patrik Oldsberg 47ca947279 Fix changeset wording to remove incorrect toJSON mention
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 23:48:27 +02:00
Patrik Oldsberg dd9a912b93 Merge pull request #33881 from backstage/rugvip/remove-unnecessary-exports-of-file-local-helpers
Remove unnecessary exports of file-local helpers
2026-04-13 23:43:44 +02:00
Patrik Oldsberg ad33d56c9e Update changeset wording
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 23:43:35 +02:00
Patrik Oldsberg c9212bf4ce auth-backend: remove unused isCimdUrl function (#33882)
The function was a thin wrapper around validateCimdUrl that caught errors
and returned a boolean. It was never imported by any production code —
only by test files. Tests now use validateCimdUrl directly.


Made-with: Cursor

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-04-13 23:43:26 +02:00
Patrik Oldsberg d79072b5de Update phantom T getter doc comments and expand changeset scope
Updated doc comments on ExtensionPoint.T and ServiceRef.T to reflect
that reading the value returns null rather than throwing. Expanded the
changeset to cover all three behavioral changes in the PR.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 23:10:16 +02:00
Patrik Oldsberg fb9efc3e28 Address review feedback for waitForReady and helpers
Change lastError type to unknown to match catch clause semantics,
and disconnect failed Keyv instances in attemptKeyvConnection to
avoid leaking sockets/handles during readiness polling.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 22:53:29 +02:00
Patrik Oldsberg 39441ee64e Merge pull request #33879 from backstage/rugvip/remove-dead-relations-file
catalog-graph: remove dead duplicate relations.ts file
2026-04-13 22:41:38 +02:00
Patrik Oldsberg 213ebe77cc Harmonize phantom .T getter behavior between ExtensionPoint and ServiceRef
Both `createExtensionPoint` and `createServiceRef` now consistently return
`null` from the phantom `.T` getter instead of throwing. Added `toJSON()` to
`ExtensionPoint` for parity with `ServiceRef`.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 22:40:36 +02:00
Patrik Oldsberg 86b9839044 Fix override name in catalog-graph README
The entity card override example used `name: 'entity-relations'` but
the actual extension uses `name: 'relations'`.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 22:31:29 +02:00
Patrik Oldsberg 8923d6def0 Drop Zod v3 support from new configSchema path
The new `configSchema` option now strictly requires StandardSchemaV1
values (e.g. Zod v4 or `zod/v4` from the Zod v3 package). Direct Zod
v3 schemas are no longer silently converted and will throw an error.

The deprecated `config.schema` callback path continues to work with
Zod v3 through a separate `createDeprecatedConfigSchema` function.

Also adds `createZodV4FilterPredicateSchema` to `@backstage/filter-predicates`
as a v4 counterpart to the now-deprecated v3 variant.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 21:38:28 +02:00
Patrik Oldsberg dd4ea5896d Remove unnecessary exports of file-local helpers
Remove the `export` keyword from functions that are only used within
their own file and are not part of any package's public API:

- `parseStringsParam` and `isOrder` in notifications-backend
- `toWeb` in backend-defaults urlReader
- `resolvePublicPath` in app-backend

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 21:29:21 +02:00
Patrik Oldsberg f58220d2fa kubernetes-backend: remove unused APPLICATION_JSON constant
The constant was exported but never referenced in production code.
The only usage was in the test file, where it's now inlined.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 21:27:48 +02:00
Patrik Oldsberg 86c14e4ac2 catalog-graph: remove dead duplicate relations.ts file
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 21:24:38 +02:00
Patrik Oldsberg f44c6bd265 backend-test-utils: deduplicate test infrastructure readiness-polling helpers
Extract shared internal helpers to eliminate near-identical readiness
polling loops across database and cache test infrastructure:

- waitForReady: generic probe-until-ready loop used by both postgres
  and mysql database helpers
- attemptKeyvConnection: generic Keyv set/get probe loop used by redis,
  valkey, and memcached cache helpers
- startRedisLikeContainer: shared container-start for redis-protocol
  stores (redis and valkey)

Also normalizes cache timeout error formatting to use stringifyError
instead of template string coercion.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 20:48:35 +02:00
Patrik Oldsberg e98b5c5847 Merge pull request #33871 from backstage/remove-unused-isvalidurl
devtools-backend: remove unused isValidUrl function
2026-04-13 20:11:41 +02:00
Patrik Oldsberg 8fc30cae53 Drop changeset for devtools-backend
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 19:34:43 +02:00
Patrik Oldsberg 925a63e27e auth-backend-module-cloudflare-access-provider: 🧹 (#33870)
* Remove unused CF_AUTH_IDENTITY constant

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Add patch changeset for CF_AUTH_IDENTITY removal

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Update changeset message per review feedback

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Remove changeset per review feedback

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

---------

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-04-13 19:34:13 +02:00
Patrik Oldsberg 965a821ee9 Add missing changeset for devtools-backend
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 19:27:00 +02:00
Patrik Oldsberg 5fcee4b503 Merge pull request #33874 from backstage/rugvip/remove-unused-param-parsers
catalog-backend: remove unused param parsers
2026-04-13 18:43:43 +02:00
Patrik Oldsberg 406e83d361 Merge pull request #33873 from backstage/rugvip/remove-unused-has-property-rule
scaffolder-backend: remove unused hasProperty permission rule
2026-04-13 18:43:19 +02:00
Patrik Oldsberg 60bbc507ac Merge pull request #33875 from backstage/chore/fix-auth0-changeset-wording
docs: clarify Auth0 logout changeset description
2026-04-13 18:39:32 +02:00
Jonathan Roebuck 698a835ab6 Update .changeset/auth0-federated-logout.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
2026-04-13 17:12:13 +01:00
Jonathan Roebuck 0e31e9c312 docs: clarify Auth0 logout changeset description
The original changeset implied the logout redirect only happens when
federatedLogout is true. In reality, sign-out always redirects to
Auth0's /v2/logout to clear the Auth0 session cookie. The
federatedLogout flag only controls whether the upstream IdP session
is also terminated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
2026-04-13 16:36:53 +01:00
Patrik Oldsberg 1af0851cc9 Merge pull request #33872 from backstage/rugvip/remove-unused-message-file-path-helpers
cli-module-translations: 🧹
2026-04-13 17:21:21 +02:00
Fredrik Adelöw e5fcfcb2cb Add catalog model layers with JSON Schema based kind declarations
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-13 16:54:15 +02:00
Patrik Oldsberg 61454d9a0c scaffolder-backend: remove unused hasProperty permission rule
The hasProperty rule was not included in the scaffolderActionRules export
or the public API report. Remove it and its associated tests.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 16:51:10 +02:00
Patrik Oldsberg 291b20be3e catalog-backend: remove unused parseIntegerParam and parseStringParam
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 16:50:58 +02:00
Patrik Oldsberg 0c4d91cbef Remove unused messagePatternToGlob and patternHasSubdirectories
These two internal functions in cli-module-translations were never
imported by any production code. Remove them along with their tests.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 16:50:16 +02:00
Patrik Oldsberg 5e0bfc850a devtools-backend: remove unused isValidUrl function
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 16:49:45 +02:00
Aramis Sennyey 722b35e1a4 docs: use accordions for common issues in golden-path (#33840)
* fix: use accordions for common issues

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* fix code block

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

---------

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-04-13 10:23:44 -04:00
Patrik Oldsberg 68c557b381 backend-plugin-api: tighten internal any usage (#33867)
* backend-plugin-api: tighten internal any usage

Replace internal `any` type annotations with proper types:

- Use `'root' | 'plugin'` union in DepsToInstances conditional type
  and createServiceRef implementation signature
- Use Error type guard with object cast fallback in
  isDatabaseConflictError instead of `as any`

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Use isError in isDatabaseConflictError

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Update changeset wording per review feedback

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

---------

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-04-13 14:58:03 +02:00
Patrik Oldsberg d815917053 Merge pull request #33862 from backstage/rugvip/delete-orphaned-urlupdater
plugin-search: 🧹
2026-04-13 14:06:45 +02:00
Patrik Oldsberg 4c09967317 Deduplicate frontend plugin/module extension collection logic (#33869)
Extract the shared extension resolution and duplicate-check logic from
createFrontendPlugin and createFrontendModule into a new
resolveExtensionDefinitions helper. Also fixes the duplicate extension
error message in createFrontendModule to say "Module" instead of
"Plugin".


Made-with: Cursor

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-04-13 13:58:59 +02:00
Patrik Oldsberg 9b57f709e9 Merge pull request #33866 from backstage/rugvip/assert-error-delegate-to-is-error
Have `assertError` delegate to `isError` in `@backstage/errors`
2026-04-13 13:49:37 +02:00
Patrik Oldsberg 5e8b8399f0 Merge pull request #33864 from backstage/rugvip/remove-unused-openapi-generator-constants
repo-tools: remove unused OpenAPI generator constants
2026-04-13 13:46:15 +02:00
Patrik Oldsberg eb5cbb0ea6 Merge pull request #33863 from backstage/rugvip/delete-unused-blobtobase64
plugin-scaffolder: 🧹
2026-04-13 13:44:52 +02:00