Commit Graph

73984 Commits

Author SHA1 Message Date
Fredrik Adelöw 445d10130e Merge pull request #34304 from backstage/dependabot/npm_and_yarn/workspaces/ui/fast-uri-3.1.2
chore(deps): Bump fast-uri from 3.1.0 to 3.1.2 in /workspaces/ui
2026-05-25 12:05:01 +02:00
Fredrik Adelöw a073460c13 Merge pull request #34333 from backstage/dependabot/npm_and_yarn/microsite/tootallnate/once-2.0.1
chore(deps): bump @tootallnate/once from 2.0.0 to 2.0.1 in /microsite
2026-05-25 12:04:20 +02:00
Fredrik Adelöw faef6493e7 Merge pull request #34332 from backstage/dependabot/npm_and_yarn/tootallnate/once-2.0.1
chore(deps): bump @tootallnate/once from 1.1.2 to 2.0.1
2026-05-25 12:03:54 +02:00
Fredrik Adelöw 6fdfcb3cb0 Merge pull request #34306 from backstage/dependabot/npm_and_yarn/ws-8.20.1
chore(deps): Bump ws from 8.20.0 to 8.20.1
2026-05-25 12:03:16 +02:00
Fredrik Adelöw b746c2807f Merge pull request #34354 from officialasishkumar/fix-proxied-signin-base64url-token
fix(core-components): decode url-safe base64 tokens in proxy sign-in
2026-05-25 12:00:29 +02:00
Asish Kumar 8add9b992d fix(core-components): decode url-safe base64 tokens in proxy sign-in
The proxy-based sign-in page derived the session expiry from the JWT by
decoding its payload with `window.atob`, which only accepts the standard
base64 alphabet. JWTs are encoded using base64url (RFC 7515), so any
token whose payload contained '-' or '_' raised a decoding error and
broke sign-in. Translate the payload back to the standard alphabet and
restore its padding before decoding.

Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>
2026-05-25 05:30:56 +05:30
Fredrik Adelöw 6fa1cacfbe Merge pull request #34347 from koalaty-code/ingestions-last-error-column-type
fix(catalog-incremental): use text for ingestions.last_error column type
2026-05-23 12:16:16 +02:00
Adam Letizia e846874385 fix(catalog-incremental): use text for ingestions.last_error column type
Signed-off-by: Adam Letizia <LetiziaAdam@JohnDeere.com>
2026-05-22 14:21:55 -05:00
Matthew Clarke 7092722057 perf(kubernetes-backend): pool HTTPS agents per cluster in KubernetesFetcher (#34344)
* refactor(kubernetes-backend): boy-scout KubernetesFetcher

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* fix(kubernetes-backend): restore dynamic imports for @kubernetes/client-node

The package is ESM-only and must be loaded via dynamic import() to work
in Jest's CommonJS transform. Reverts to the original inline
await import() pattern while keeping the agent pooling and refactoring.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Matthew Clarke <mclarke@spotify.com>

---------

Signed-off-by: Matthew Clarke <mclarke@spotify.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 17:59:54 +00:00
Andre Wanlin db91a8666b Merge pull request #34217 from awanlin/docs/update-reveiw-section
Contributing - Review Process Updates
2026-05-22 08:59:08 -05:00
Fredrik Adelöw 70d6810de4 Merge pull request #34338 from backstage/freben/group-opentelemetry-renovate
chore: group @opentelemetry/* packages in Renovate
2026-05-22 15:36:23 +02:00
Fredrik Adelöw 843083711c Group @opentelemetry/* packages in Renovate
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 14:36:44 +02:00
Aramis Sennyey ac410b1d26 feat(skill): automatically onboard to openapi tooling (#34179)
* feat(skill): automatically onboard to openapi tooling

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

* test skill against notifications backend

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

* update URLs to point to main repo and describe multiple client types

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

* address PR feedback

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

* revert erroneous changes

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

* add changeset

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

* address review feedback: skill doc fixes and entityRef schema dedup

Disambiguate generated entityRef/orderField types and correct skill
guidance on operationId casing and OpenAPI version support.

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

* note in skill that handler-side validation should be stripped

Reviewers may forget that manual InputError guards and primitive-type
checks become dead weight once the OpenAPI validator runs.

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

---------

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-05-21 23:01:16 -04:00
dependabot[bot] e23f05c33a chore(deps): bump @tootallnate/once from 2.0.0 to 2.0.1 in /microsite
Bumps [@tootallnate/once](https://github.com/TooTallNate/once) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/TooTallNate/once/releases)
- [Changelog](https://github.com/TooTallNate/once/blob/v2.0.1/CHANGELOG.md)
- [Commits](https://github.com/TooTallNate/once/compare/2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: "@tootallnate/once"
  dependency-version: 2.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-21 17:52:42 +00:00
Patrik Oldsberg a7d7542432 Merge pull request #31837 from the-serious-programmer/feature/catalog-export
Feature: catalog export
2026-05-21 19:50:30 +02:00
dependabot[bot] b23bc03183 chore(deps): bump @tootallnate/once from 1.1.2 to 2.0.1
Bumps [@tootallnate/once](https://github.com/TooTallNate/once) from 1.1.2 to 2.0.1.
- [Release notes](https://github.com/TooTallNate/once/releases)
- [Changelog](https://github.com/TooTallNate/once/blob/v2.0.1/CHANGELOG.md)
- [Commits](https://github.com/TooTallNate/once/compare/1.1.2...v2.0.1)

---
updated-dependencies:
- dependency-name: "@tootallnate/once"
  dependency-version: 2.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-21 17:11:33 +00:00
Fredrik Adelöw 74c5fbbafd Merge pull request #34324 from backstage/freben/fix-entity-list-triple-fetch
fix(catalog-react): eliminate redundant entity list fetches during filter initialization
2026-05-21 16:48:32 +02:00
Fredrik Adelöw 5dbbb15574 Merge pull request #34323 from backstage/freben/split-query-entities-count
fix(catalog-backend): split queryEntities list and count queries
2026-05-21 15:56:09 +02:00
Fredrik Adelöw 35c473d736 Merge pull request #34273 from backstage/freben/catalog-db-perf-skill
catalog-backend: add query performance battery and baseline
2026-05-21 15:55:30 +02:00
Fredrik Adelöw 392c1b2851 refactor(catalog-react): drop useCallback on refresh — useDebounce uses a ref internally
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-21 10:18:24 +02:00
Fredrik Adelöw 77e7ad4c7d fix(catalog-react): clear fetch dedup ref on failure instead of reverting to previous params
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-21 10:12:51 +02:00
Fredrik Adelöw 720fb542d9 cleanup(catalog-react): remove dead appliedCursor field, fix cursor-mode guard, inline getPaginationMode
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-21 09:55:57 +02:00
Fredrik Adelöw 9e880b70fd Deduplicate adjustedFilters computation
Move the adjustedFilters useMemo above refresh and reuse it in both
the fetch callback and the frontend filtering memo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 22:42:49 +02:00
1337 9929df3d8c Merge branch 'backstage:master' into feature/catalog-export 2026-05-20 20:32:27 +02:00
Fredrik Adelöw ffa59be219 Revert lastFetchParamsRef on failed fetch to allow retries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 20:24:34 +02:00
Fredrik Adelöw 779749fbd7 Guard against empty-filter fetch on mount and premature URL sync
The lastFetchParamsRef starts as undefined, so the initial debounce
would have fetched with an empty filter (returning every entity in
the catalog). Guard against this by skipping the fetch when no filter
components have registered yet.

Also skip the URL sync effect until at least one filter has been set,
to avoid briefly clearing filter query params from the URL bar before
filter components initialize.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:57:33 +02:00
Fredrik Adelöw 4694eb16e3 Revert EntityKindPicker ref — provider dedup handles it
The label is read by CatalogTable for the table title (e.g. "All
Components (42)"), so suppressing the label update would cause a
visible regression. The provider's ref-based fetch dedup already
prevents the redundant API call when only the label changes, so
the second updateFilters call is harmless.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:37:35 +02:00
Fredrik Adelöw 7c205457b6 Add changeset for entity list triple-fetch fix
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:31:38 +02:00
Fredrik Adelöw a103f0e604 test(catalog-react): add regression test for entity list fetch dedup
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:30:49 +02:00
Fredrik Adelöw 4222c73fd3 fix(catalog-react): eliminate redundant fetches in useEntityListProvider
Replace useAsyncFn + outputState comparison with ref-based fetch dedup
and generation counter. Split entity filtering into a synchronous
useMemo so frontend-only filter changes are instant.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:29:44 +02:00
Fredrik Adelöw dfb920fb6e fix(catalog-react): prevent EntityKindPicker from double-firing updateFilters on label change
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 17:28:00 +02:00
Fredrik Adelöw 2c4b4912c2 Add whereNotNull to count query sort-field EXISTS
The list CTE's INNER JOIN on search already excludes entities whose
sort-field value is NULL (truncated long values stored as NULL by
buildEntitySearch). Add the same whereNotNull to the count query's
EXISTS so totalItems matches the reachable set. Matters for fields
like metadata.description where ~128K entities have NULL values.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 16:59:39 +02:00
Fredrik Adelöw 02a6410992 Extract shared applyPredicates helper to deduplicate filter logic
The list CTE and count query both need the same filter, query, and
full-text-search predicates. Extract them into a shared
applyPredicates closure so they can't drift apart. Move the count
query construction next to the CTE for readability.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 16:35:41 +02:00
Fredrik Adelöw 59fef3e80b Add patch entry for #34323, remove shipped patches
Remove pr-33721, pr-34001, pr-34004 — all shipped in v1.51.0.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 16:31:30 +02:00
Fredrik Adelöw 0119806204 Update changeset to document totalItems semantic fix
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 16:29:17 +02:00
Andre Wanlin 097ab7e98f Contributing - Review Process Updates
Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Fixed typo

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Fixed another typo

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Addressed comments

Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2026-05-20 08:56:59 -05:00
Fredrik Adelöw 4829e8961e fix(catalog-backend): split queryEntities list and count queries
The filtered CTE was referenced twice (count + data), preventing
Postgres 12+ from inlining it. This forced full materialization of
the filtered set before LIMIT could short-circuit. Split into two
separate queries run via Promise.all so the list CTE is only
referenced once and the planner can short-circuit on LIMIT.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 15:48:22 +02:00
Fredrik Adelöw 813608335f Merge pull request #34321 from backstage/freben/enter-prerelease-mode
Enter changeset prerelease mode
2026-05-20 11:21:53 +02:00
Fredrik Adelöw 34d86b8fe3 Enter changeset prerelease mode with tag "next"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 11:10:47 +02:00
Fredrik Adelöw cd8e20d7bb Merge pull request #34314 from backstage/freben/stitch-claim-transaction
Fix stitch queue race: wrap claim in transaction
2026-05-20 10:33:53 +02:00
Fredrik Adelöw 1d10fc41e8 Update changeset and PR description to cover both fix sites
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 09:59:37 +02:00
Fredrik Adelöw dd52890773 Use ternary with await for consistent style and better stack traces
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 09:49:08 +02:00
Fredrik Adelöw 139a784ad4 Skip transaction wrapping when locking is not used
Only wrap the SELECT+UPDATE in a transaction for MySQL/PostgreSQL
where FOR UPDATE SKIP LOCKED is actually used. For sqlite3 the
transaction adds unnecessary BEGIN/COMMIT overhead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 09:44:31 +02:00
Fredrik Adelöw afc872aac6 Fix implicit any types on transaction callback parameters
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 08:06:37 +02:00
Fredrik Adelöw 6713e9fe72 Apply same transaction fix to getProcessableEntities
Same FOR UPDATE SKIP LOCKED race: the processing loop's claim query
had the SELECT and UPDATE as separate auto-committed statements.
The existing caller already wraps in a transaction, but this makes
the function self-protecting if called without one.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 00:09:16 +02:00
Fredrik Adelöw f328b6f37e Merge pull request #34316 from backstage/freben/fix-empty-each-tests
fix: correct postgres env var casing in deploy_packages workflow
2026-05-19 23:34:19 +02:00
Fredrik Adelöw 8abfa78e4c Revert eachSupportedId guard — env var fix is sufficient
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:23:37 +02:00
Fredrik Adelöw 2c53691962 Fix postgres env var casing in deploy_packages workflow
The env vars used lowercase postgres18/postgres14 instead of uppercase
POSTGRES18/POSTGRES14, which didn't match the names expected by
TestDatabases. This caused all postgres-only test suites to see no
available databases and crash.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:21:47 +02:00
Patrik Oldsberg 6733eb1823 Merge pull request #34313 from backstage/worktree-v1.51-release-notes
Add v1.51.0 release notes
2026-05-19 23:21:12 +02:00
Fredrik Adelöw 03f0f3f953 Add changeset
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:19:18 +02:00