Commit Graph

27120 Commits

Author SHA1 Message Date
Fredrik Adelöw 8a2a81fa1e Merge pull request #33687 from backstage/freben/bump-glob-rollup
Bump glob to v13 and rollup to v4.59+ to fix security vulnerabilities
2026-03-31 16:06:22 +02:00
Fredrik Adelöw 9ee88aeb59 Merge pull request #33170 from dbmdz/gitlab-repo-picker-improvements
Gitlab repo picker improvements
2026-03-31 15:55:10 +02:00
Fredrik Adelöw b6c0ef5d5d Add windowsPathsNoEscape to glob calls that may receive backslash paths
Glob v13 treats backslashes as escape characters by default, unlike v7
which treated them as path separators on Windows. This broke Windows CI
where path.join/resolve produce backslash paths.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-31 15:20:56 +02:00
Fredrik Adelöw c3b4782b97 Merge pull request #33361 from lokeshkaki/feat/azure-scm-events
feat(catalog-backend-module-azure): add Azure DevOps SCM event translation layer
2026-03-31 15:03:26 +02:00
Fredrik Adelöw c5958fc175 Merge pull request #33362 from lokeshkaki/feat/gitlab-scm-events
feat(catalog-backend-module-gitlab): add GitLab SCM event translation layer for catalog reprocessing
2026-03-31 14:59:18 +02:00
Fredrik Adelöw 2e5c5f85b2 Bump glob to v13 and rollup to v4.59+ to fix security vulnerabilities
Addresses the high severity rollup path traversal vulnerability
(GHSA-mw96-cpmx-2vgc) and the glob security advisory by upgrading
all instances across the monorepo. Updates code that used the legacy
callback-based glob API to use the modern promise/sync API.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-30 23:13:08 +02:00
Fredrik Adelöw 0419acede2 Revert "Bump glob to v13 and rollup to v4.59+ to fix security vulnerabilities"
This reverts commit 6d76b1729b.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-30 23:11:17 +02:00
Fredrik Adelöw 6d76b1729b Bump glob to v13 and rollup to v4.59+ to fix security vulnerabilities
Addresses the high severity rollup path traversal vulnerability
(GHSA-mw96-cpmx-2vgc) and the glob security advisory by upgrading
all instances across the monorepo. Updates code that used the legacy
callback-based glob API to use the modern promise/sync API.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-30 23:10:09 +02:00
Fredrik Adelöw d06ba3a58e Revert "Bump glob to v13 and rollup to v4.59+ to fix security vulnerabilities"
This reverts commit 91b359ee5f.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-30 23:05:11 +02:00
Fredrik Adelöw 91b359ee5f Bump glob to v13 and rollup to v4.59+ to fix security vulnerabilities
Addresses the high severity rollup path traversal vulnerability
(GHSA-mw96-cpmx-2vgc) and the glob security advisory by upgrading
all instances across the monorepo. Updates code that used the legacy
callback-based glob API to use the modern promise/sync API.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-30 23:02:37 +02:00
Fredrik Adelöw c64d386fc6 Fix flaky api-docs alpha test by increasing findByText timeout
The test assertions for lazy-loaded extension components used the
default 1000ms RTL timeout, which is insufficient under CI load.
Increased to 10000ms to match the pattern in createDevApp.test.tsx.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-30 22:51:48 +02:00
Patrik Oldsberg cd0a7b58cc Merge pull request #33581 from backstage/rugvip/dual-frontend-system-support
plugins: add title and icon to NFS plugin definitions
2026-03-30 17:26:05 +02:00
Patrik Oldsberg 014ba202ba Merge pull request #33670 from backstage/rugvip/app-routes-redirect-config
plugin-app: add redirect config to app/routes extension
2026-03-30 16:40:37 +02:00
Fredrik Adelöw 0a51db2547 Merge pull request #33676 from backstage/freben/catalog-search-table-sync
catalog: Reduce search table write churn during stitching
2026-03-30 16:27:23 +02:00
Fredrik Adelöw 9da73bf599 catalog: Reduce search table write churn during stitching
Replace the bulk DELETE + INSERT of all search rows with a minimal sync
that only touches rows that actually changed:

- Postgres: single writable CTE with unnest — DELETE stale rows and
  INSERT new ones in one atomic statement using snapshot isolation
- MySQL: temporary table merge with deadlock retry (errno 1213)
- SQLite: unchanged bulk replace (sufficient for dev/test)

For a typical user entity with ~200 search rows where one annotation
changed, this reduces the operation from ~400 row writes to ~2.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-30 16:01:37 +02:00
Patrik Oldsberg baa72405ac Fix root path redirect matching all routes
Special-case `from: '/'` in redirect config to use an exact path match
instead of the `/*` wildcard, which would match the entire app.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 14:46:18 +02:00
Charles de Dreuille 3bd5a0c7b8 Improve Toast setup
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-30 13:13:23 +01:00
Charles de Dreuille 4dab043bd5 Update Toast.stories.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-30 12:05:12 +01:00
Charles de Dreuille cf2de9c8b8 Update Toast.stories.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-30 11:56:42 +01:00
Charles de Dreuille b651807e56 fix(storybook): replace require() with ESM import in Toast stories
The RealAlertApiStory component used require('@backstage/core-plugin-api')
inside the function body. Vite bundles Storybook as ESM, where require is
not available at runtime, causing a ReferenceError. Replace with a
standard top-level import.

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-03-30 11:55:27 +01:00
Patrik Oldsberg e5baa20a1b plugin-app: add redirect config to app/routes extension
Allow users to configure URL redirects on the app/routes extension
through app-config. Redirects are specified as an array of {from, to}
path pairs in the extension config schema.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 00:34:56 +02:00
Patrik Oldsberg 3c0b453d7e Revert NFS page variants, keep only title and icon additions
Roll back the NFS page component changes (BuiHeader, headerVariant,
NfsCatalogGraphPage, NfsDefaultImportPage) from catalog-graph and
catalog-import plugins. Only the title and icon metadata additions to the
new frontend system plugin definitions are retained.

For the kubernetes plugin, replace the generic RiShipLine icon with a
proper Kubernetes helm wheel SVG icon from Simple Icons.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 00:19:41 +02:00
Fredrik Adelöw 0eb8d1a31f Merge pull request #33290 from backstage/freben/catalog-exists-query-optimization
catalog-backend: optimize entity filter queries with EXISTS
2026-03-29 12:48:38 +02:00
Fredrik Adelöw 4538f05b24 Address PR review: extract shared searchExists helper and rename strategy
- Extract shared `searchExists` helper into `searchSubquery.ts` to avoid
  duplicate EXISTS subquery logic between the two filter modules
- Rename `applyInStrategy` to `applyExistsStrategy` to reflect the actual
  query shape
- Update block comment with correct EXISTS SQL examples
- Remove unused `strategy` parameter from `applyEntityFilterToQuery`

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-29 12:31:01 +02:00
Patrik Oldsberg 9f3affb864 Merge pull request #33601 from thomvaill/github-provider-fix-validateLocationsExist-with-branch-filter
fix(github-provider): `validateLocationsExist: true` + `filters.branch` bug [contribfest]
2026-03-29 12:14:23 +02:00
Fredrik Adelöw 688481429c catalog-backend: optimize entity filter queries with EXISTS
Switch filter query builders from IN (subquery) to EXISTS (correlated
subquery) patterns. This enables PostgreSQL semi-join optimizations
(stops at first match) and replaces NOT IN with NOT EXISTS (faster,
no NULL-semantics pitfalls).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-28 22:45:48 +01:00
Patrik Oldsberg 34f5dc5ae1 Update catalog-graph alpha API report
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-28 15:02:28 +01:00
Patrik Oldsberg e923ff1485 Remove unnecessary NFS page component exports
Page components without props don't need to be exported from the
package API surface. Import directly from the component file in
the alpha entry points instead.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-28 14:50:59 +01:00
Patrik Oldsberg 3cf1950a3f plugin-catalog-import: move NFS page export to alpha entry point
Move NfsDefaultImportPage out of the public API and export it as
DefaultImportPage from the alpha entry point instead.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-28 14:03:00 +01:00
Fredrik Adelöw 2905c5931d Remove unused jest-when dev dependency from scaffolder-backend-module-rails
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-28 11:16:00 +01:00
Patrik Oldsberg 7d942709fa Merge pull request #31406 from fcamgz/search-modal-overflow-fix
Fixed SearchModal not cleaning up body overflow
2026-03-28 09:58:09 +01:00
Johan Persson 04162167f5 fix(catalog-react): fix relation cards showing only one entity
Use `paginationOptions: { type: 'none' }` in EntityDataTable instead
of deriving page size from data length, which was 0 during the initial
loading render causing only one row to be displayed.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-27 12:36:03 +01:00
Fredrik Adelöw 150418a35f Merge pull request #33611 from backstage/dependabot/npm_and_yarn/nodemailer-8.0.4
build(deps): bump nodemailer from 7.0.13 to 8.0.4
2026-03-27 11:35:54 +01:00
Fredrik Adelöw 94c64ee33d Merge pull request #33596 from jonkoops/dom-asynciterable-types
chore: add `DOM.AsyncIterable` lib and use standard filesystem types
2026-03-27 11:31:37 +01:00
dependabot[bot] 19ef9fbf34 build(deps): bump nodemailer from 7.0.13 to 8.0.4
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 7.0.13 to 8.0.4.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v7.0.13...v8.0.4)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 8.0.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-27 01:14:52 +00:00
thomvaill b11e3380af fix(github-provider): validateLocationsExist: true + filters.branch bug
Signed-off-by: thomvaill <thomvaill@bluebricks.dev>
2026-03-26 20:29:54 +01:00
Fredrik Adelöw 3f8060c460 Merge pull request #33536 from jonkoops/fix/zod-schema-first-generics
fix: use schema-first generic pattern for Zod type compatibility
2026-03-26 17:16:51 +01:00
Jon Koops fa550786b0 fix: use schema-first generic pattern for Zod type compatibility
Refactor `SignInResolverFactoryOptions` and `createSchemaFromZod` to use
`TSchema extends ZodType` instead of `ZodSchema<Output, Def, Input>`,
avoiding "excessively deep" TypeScript inference errors when multiple
Zod copies are resolved in a project.

Signed-off-by: Jon Koops <jonkoops@gmail.com>
2026-03-26 16:31:41 +01:00
Jon Koops a7a14b78c1 chore: add DOM.AsyncIterable lib and use standard filesystem types
Add `DOM.AsyncIterable` to the shared TypeScript configuration in
`@backstage/cli`, making standard async iteration methods available on
DOM APIs like `FileSystemDirectoryHandle`. This aligns behavior with
TypeScript 6.0, where this lib is included in `DOM` by default.

With the async iterable types now available, replace the custom
`IterableDirectoryHandle` and `WritableFileHandle` types in the scaffolder
plugin with the standard `FileSystemDirectoryHandle` and
`FileSystemFileHandle` DOM types. Add type guard functions for
`FileSystemHandle` since it is not a discriminated union.

Signed-off-by: Jon Koops <jonkoops@gmail.com>
2026-03-26 16:23:46 +01:00
Johan Persson 87eb31c141 fix(org): prevent profile card content overflow on narrow screens
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-26 14:49:13 +01:00
Johan Persson eba2f615b6 fix(catalog-react): prevent EntityInfoCard header overflow on narrow screens
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-26 14:49:13 +01:00
Patrik Oldsberg d156cf48bb plugins: add title, icon, and NFS page variants to migrated plugins
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-25 17:05:23 +01:00
Patrik Oldsberg fa0593e6e5 plugin-catalog-import: add NFS page layout and plugin metadata
- Register title and icon on the new-frontend createFrontendPlugin export.
- Add NfsDefaultImportPage using @backstage/ui Header with shared grid body.
- Point the alpha PageBlueprint loader at the NFS variant.
- Depend on @backstage/ui and @remixicon/react.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-25 16:58:21 +01:00
Patrik Oldsberg 0e147e8e45 plugin-catalog-graph: nfs page variant and plugin title/icon
- Add title, icon, and NfsCatalogGraphPage to the new frontend plugin alpha entry
- Refactor catalog graph page with headerVariant for legacy vs Backstage UI header
- Export NfsCatalogGraphPage from the CatalogGraphPage module

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-25 16:58:21 +01:00
Stephanie Cao 309b7128c4 feat(scaffolder): create scaffolder mcp action to execute a template (#33124)
* create mcp action to execute a template

Signed-off-by: Stephanie <yangcao@redhat.com>

* include changeset

Signed-off-by: Stephanie <yangcao@redhat.com>

* address test errors and review comments from copilot

Signed-off-by: Stephanie <yangcao@redhat.com>

* address review comments

Signed-off-by: Stephanie <yangcao@redhat.com>

* add execute-template to mcp actions list

Signed-off-by: Stephanie <yangcao@redhat.com>

* fix: address review feedback for execute-template action

Signed-off-by: benjdlambert <ben@blam.sh>

---------

Signed-off-by: Stephanie <yangcao@redhat.com>
Signed-off-by: benjdlambert <ben@blam.sh>
Co-authored-by: benjdlambert <ben@blam.sh>
2026-03-25 16:30:49 +01:00
Ben Lambert 4559806b96 feat(actionsRegistry): Adding support for examples (#33551)
* feat(backend-plugin-api): add typed examples to actions registry

Signed-off-by: benjdlambert <ben@blam.sh>

* fix: address review feedback for actions registry examples

Signed-off-by: benjdlambert <ben@blam.sh>

* fix: remove empty examples from scaffolder action bridge

Signed-off-by: benjdlambert <ben@blam.sh>

* chore: add changeset for scaffolder-backend

Signed-off-by: benjdlambert <ben@blam.sh>

* fix: update router test to match removed examples field

Signed-off-by: benjdlambert <ben@blam.sh>

---------

Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-24 18:16:23 +01:00
github-actions[bot] c1b510cabb Version Packages (next) 2026-03-24 14:54:00 +00:00
Fredrik Adelöw 94a4037fcc Merge pull request #33481 from walsm232/fix/catalog-refresh-state-deadlock
fix(catalog): Fix catalog refresh_state deadlock when running multiple replicas
2026-03-24 14:21:18 +01:00
Ben Lambert 2e753eefb6 fix(auth-backend): allow any port for loopback redirect URIs per RFC 8252 (#33508)
For CIMD clients using loopback redirect URIs (localhost/127.0.0.1),
match by scheme, hostname, and path only, ignoring the port. Native
CLI apps like Claude Code use ephemeral ports for OAuth callbacks.

Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-21 23:19:38 +00:00
Michael Walsh 35f69e168c fix: Run Prettier
Signed-off-by: Michael Walsh <walshmichael310@gmail.com>
2026-03-20 18:00:10 +01:00