74233 Commits

Author SHA1 Message Date
Fredrik Adelöw 23686b5095 Update changeset and PR description
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-25 15:24:02 +02:00
Fredrik Adelöw 7efdc27464 Remove mountPath → initialRouteEntries defaulting
Don't auto-default initialRouteEntries from mountPath — for
parameterized paths this silently produces wrong params (literal
':name' values). Require callers to set both explicitly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-25 15:18:11 +02:00
Fredrik Adelöw f5827aa8ee Reduce to lockfile-only update
Remove the package.json range bump and changeset — the range already
covers the new version, so only the lockfile needs updating.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-25 14:26:22 +02:00
dependabot[bot] a2d06dacc1 chore(deps): Bump webpack-dev-server from 5.2.3 to 5.2.4
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 5.2.3 to 5.2.4.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.3...v5.2.4)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-version: 5.2.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-25 14:25:38 +02:00
renovate[bot] cbf78da153 chore(deps): update dependency dompurify to v3.4.5
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-25 12:05:08 +00:00
Fredrik Adelöw e60d34304d Merge pull request #34174 from backstage/dependabot/npm_and_yarn/microsite/babel/plugin-transform-modules-systemjs-7.29.4
chore(deps): Bump @babel/plugin-transform-modules-systemjs from 7.28.5 to 7.29.4 in /microsite
2026-05-25 13:30:36 +02:00
Fredrik Adelöw 4b0ad7b0b5 Merge pull request #34351 from backstage/dependabot/npm_and_yarn/qs-6.15.2
chore(deps): bump qs from 6.15.1 to 6.15.2
2026-05-25 13:29:33 +02:00
Fredrik Adelöw 380e7f02c7 Merge pull request #34341 from backstage/renovate/migrate-config
Migrate Renovate config
2026-05-25 13:29:01 +02:00
backstage-goalie[bot] 461a3d3320 Merge pull request #34358 from backstage/renovate/stoplight-spectral-rulesets-1.x-lockfile
Update dependency @stoplight/spectral-rulesets to v1.22.3
2026-05-25 11:05:14 +00:00
Vincenzo Scamporlino bfef8b7b20 Merge pull request #34327 from backstage/unprocessed-entities
Unprocessed entities: update installation instructions
2026-05-25 12:46:21 +02:00
Fredrik Adelöw 7b7981b4a3 Reduce to only the effective change: matchPackagePatterns → matchPackageNames
Renovate deprecated matchPackagePatterns. The new matchPackageNames
accepts regex patterns wrapped in / delimiters. All other changes
in this PR (quote style, comment removal) were cosmetic and have
been reverted.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-25 12:21:41 +02:00
renovate[bot] 602fb33799 chore(deps): update dependency @stoplight/spectral-rulesets to v1.22.3
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-25 10:17:52 +00:00
Fredrik Adelöw 17cce350b3 Merge pull request #34219 from backstage/renovate/embedded-postgres-18.x
Update dependency embedded-postgres to v18.3.0-beta.17
2026-05-25 12:09:39 +02:00
Fredrik Adelöw 2b2184a26d Merge pull request #34245 from backstage/renovate/ghcr.io-devcontainers-features-common-utils-2.x
Update ghcr.io/devcontainers/features/common-utils Docker tag to v2.5.9
2026-05-25 12:08:05 +02:00
Fredrik Adelöw 4b78a21ba5 Merge pull request #34279 from backstage/renovate/chromaui-action-digest
Update chromaui/action digest to 7aca53e
2026-05-25 12:07:01 +02:00
Fredrik Adelöw 5e438e0db0 Merge pull request #34253 from backstage/renovate/actions-setup-node-6.x
Update actions/setup-node action to v6.4.0
2026-05-25 12:06:46 +02:00
Fredrik Adelöw 0432ce67a3 Merge pull request #34302 from backstage/dependabot/npm_and_yarn/workspaces/ui/vm2-3.11.5
chore(deps): Bump vm2 from 3.10.5 to 3.11.5 in /workspaces/ui
2026-05-25 12:05:57 +02:00
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
Asish Kumar def82d4d5e fix(backend-defaults): use ipKeyGenerator for rate limiter keys
The built-in rate limiter derived its key directly from `req.ip`, which
express-rate-limit 8.x rejects with an ERR_ERL_KEY_GEN_IPV6 validation
error. A raw IPv6 address used as a rate limiting key would let a client
bypass the limit by rotating through addresses in its allotted block, so
the library now requires its `ipKeyGenerator` helper to normalize the
address. Wrap the resolved client address in that helper so the limiter
starts cleanly and groups IPv6 clients by their address block.

Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>
2026-05-25 05:21:28 +05:30
dependabot[bot] e0889a3f8e chore(deps): bump qs from 6.15.1 to 6.15.2
Bumps [qs](https://github.com/ljharb/qs) from 6.15.1 to 6.15.2.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.15.1...v6.15.2)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.15.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-23 12:27:32 +00:00
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
renovate[bot] 699b15678b Update actions/setup-node action to v6.4.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 17:18:40 +00:00
renovate[bot] 01e3e3d32f Update chromaui/action digest to 7aca53e
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 17:18:27 +00:00
ryoku4 1c7cbb2ae7 docs: add general word list for consistent terminology usage
Signed-off-by: ryoku4 <122875619+ryoku4@users.noreply.github.com>
2026-05-23 00:27:23 +09:00
ryoku4 247ec64ba5 docs: correct "Github" to "GitHub" in multiple documentation files
Signed-off-by: ryoku4 <122875619+ryoku4@users.noreply.github.com>
2026-05-23 00:23:27 +09:00
Fredrik Adelöw 0b8b67767b fix(catalog-backend): prevent overlapping stitches for the same entity
markForStitching now only updates the ticket on conflict, leaving
next_stitch_at unchanged so an in-progress worker isn't interrupted.

markDeferredStitchCompleted bumps next_stitch_at to now() when the
ticket changed, so pending re-stitches happen immediately after the
current stitch finishes rather than waiting for the timeout.

performStitching no longer calls markDeferredStitchCompleted when
abandoned due to a stale ticket, since the queue entry belongs to
another worker.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 16:57:53 +02:00
Fredrik Adelöw a3d55d7a0e cleanup(catalog-backend): fix blank lines and unsafe ticket fetching in tests
Remove extra blank lines left behind when the stitcher field was
removed from engine test constructors. Extract getStitchTicket helper
to assert the queue entry exists instead of using optional chaining
that could silently pass undefined.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 16:49:36 +02:00
Fredrik Adelöw 5b348f3ac1 refactor(catalog-backend): make stitchTicket required in performStitching
Now that immediate mode is removed, the stitch ticket is always
provided by the deferred worker. Remove the optional marker and all
the conditional guards that checked for its presence.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 16:34:06 +02: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
ryoku4 80d86dbbd2 docs: correct "Github" to "GitHub" for consistency in branding
Signed-off-by: ryoku4 <122875619+ryoku4@users.noreply.github.com>
2026-05-22 22:55:25 +09:00
renovate[bot] 834b3cd856 Migrate config .github/renovate.json5 2026-05-22 13:46:02 +00: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 9f85367cdc fix(catalog-backend): deduplicate entity IDs when marking for stitching after deletion
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:40:30 +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
Fredrik Adelöw e2994512d6 Only show full-table spinner on truly initial load
Track whether the table has ever received data. A filter change that
empties the client-side entity list (e.g. filtering by an owner with
no matches) should not trigger the full-table loading spinner — the
table should show "No records" or stale rows with the title spinner,
not flash a large spinner.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 12:41:19 +02:00
Fredrik Adelöw 470b1ce4d5 Keep old count visible until new rows arrive
Show the previous count alongside the spinner during loading. Only
hide the count when new rows have arrived but the count hasn't
caught up yet (would be wrong for the new data). This makes the
only immediate visual change after a filter switch the spinner
appearing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 12:37:25 +02:00
Fredrik Adelöw 11c225cb68 Preserve kind casing in table title during transitions
Use the filter's label (which has proper casing like "AiResources")
when it matches the displayed entities. Fall back to the entity's
kind field directly instead of lowercasing and re-capitalizing,
which mangled camelCase kinds like AiResource into Airesource.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 12:35:42 +02:00
Fredrik Adelöw 87727f50db Derive column layout from displayed entities, not filter state
The column set (System, Owner, Type, etc.) now stays consistent with
the displayed rows during kind filter transitions, same as the name
column's defaultKind. The switch statement uses the entity-derived
kind so columns don't jump until new data actually arrives.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 12:31:29 +02:00
Fredrik Adelöw 8fe727430b Add space before count parenthesis in table title
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 12:29:31 +02:00
Fredrik Adelöw 588514536a Keep title consistent with displayed data during transitions
Derive the title's kind label from the displayed entities instead
of the filter state. Only show the count when both the list and
count have settled (not loading), so stale counts from a previous
filter don't appear alongside new data. The spinner shows whenever
anything is still loading (list OR count).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 12:28:12 +02:00
Fredrik Adelöw 9d013340a1 Derive defaultKind from displayed entities, not filter state
When stale rows are kept visible during a kind filter change, the
name column's defaultKind should match the entities being displayed,
not the pending filter. Otherwise entity names flash with a kind
prefix (e.g. "api:foo") until new data arrives. The column layout
switch still uses the filter's kind so the table shape updates
immediately.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 12:21:26 +02:00
Fredrik Adelöw 291b3df579 Update changeset to cover catalog table loading UX changes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 12:00:53 +02:00
Fredrik Adelöw 3a425b827e Regenerate API reports for catalog-react
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-22 11:56:31 +02:00