21074 Commits

Author SHA1 Message Date
dependabot[bot] 638e6c73ac chore(deps): bump yauzl from 3.2.0 to 3.2.1
Bumps [yauzl](https://github.com/thejoshwolfe/yauzl) from 3.2.0 to 3.2.1.
- [Commits](https://github.com/thejoshwolfe/yauzl/compare/3.2.0...3.2.1)

---
updated-dependencies:
- dependency-name: yauzl
  dependency-version: 3.2.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-14 01:44:53 +00:00
Kurt King 5f1e7b8341 refactor: use MetricsService
Signed-off-by: Kurt King <kurtaking@gmail.com>
2026-03-13 17:38:08 -06:00
Andre Wanlin 86f9affed8 Merge pull request #33218 from SanderDelden/feat/plugin-scaffolder-node-add-githelper-removal-function
plugin-scaffolder-node: Add function to gitHelpers to stage files for removal
2026-03-13 14:34:12 -05:00
Andre Wanlin b33e0498fd Merge pull request #33132 from abdellahhn/scaffolder-add-run-id-return-value-to-github-actions-dispatch-v2
feat(scaffolder): add returnWorkflowRunDetails to github:actions:dispatch action
2026-03-13 13:58:16 -05:00
Jonathan Roebuck 5d4fc274a2 Update .changeset/bui-table-root-loading-prop.md
Co-authored-by: Johan Persson <johanopersson@gmail.com>
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
2026-03-13 18:29:27 +00:00
Jonathan Roebuck b838cc97b0 docs(ui): add changeset and docs for TableRoot loading prop
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
2026-03-13 18:29:27 +00:00
Jonathan Roebuck 36d9e1b56e docs(ui): update changeset with affected component
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
2026-03-13 18:29:26 +00:00
Jonathan Roebuck 4bd75da4cf docs(ui): fix changeset wording for Table loading state
Remove inaccurate aria-busy claim from changeset — react-aria-components
does not forward it to the DOM.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
2026-03-13 18:29:26 +00:00
Jonathan Roebuck 690786f84d feat(ui): replace Table loading text with skeleton rows
Add a skeleton loading state to the BUI Table component that shows the
table header with animated skeleton rows instead of plain "Loading..."
text. Includes accessibility support via aria-busy and live region
announcements.

BUCKS-2919

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
2026-03-13 18:29:25 +00:00
Charles de Dreuille fcaac3b8bd Fix Card onPress event
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-13 17:07:52 +00:00
renovate[bot] 79453c0e46 chore(deps): update dependency wait-for-expect to v4
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 11:15:06 +00:00
Ben Lambert 06294aafba feat(auth): migrate auth plugin from Material-UI to Backstage UI (#33282)
Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-13 09:51:53 +01:00
Charles de Dreuille 27c2c24a1a Add migration notes
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-12 16:27:40 +00:00
Charles de Dreuille 9d5f3baf1e Update styles and types on Checkbox
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-12 16:11:56 +00:00
benjdlambert 97c917ea1c refactor: rename permission to visibilityPermission
Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-12 15:07:32 +01:00
benjdlambert 5f739e1312 fix: address PR feedback for actions permissions
Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-12 15:00:36 +01:00
Fredrik Adelöw 19dc1a45cb Merge pull request #33280 from drodil/remove_trx
fix(catalog): make catalog entity deletion transactional
2026-03-12 11:58:26 +01:00
Hellgren Heikki a91bd1b8a0 fix(catalog): make catalog entity deletion transactional
additionally, make the catalog build respect the deferred stitching mode
after deleting entities.

Signed-off-by: Hellgren Heikki <heikki.hellgren@op.fi>
2026-03-12 12:20:10 +02:00
Fredrik Adelöw a41eff026f Merge pull request #33251 from backstage/renovate/globals-17.x
chore(deps): update dependency globals to v17
2026-03-12 10:25:46 +01:00
Fredrik Adelöw c0b779f5a0 Merge pull request #33281 from backstage/freben/search-fk-safe-migration
fix(catalog): make search FK migration safe for large databases
2026-03-12 10:07:18 +01:00
benjdlambert d504478c1e docs: add permissions documentation for actions registry
Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-12 10:06:40 +01:00
Fredrik Adelöw d6669758af Merge pull request #33298 from backstage/freben/devtools-cancel-task
devtools: Add cancel task operation to scheduled tasks
2026-03-12 10:02:54 +01:00
benjdlambert cc8348ef2e feat: add permissions integration to actions registry
Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-12 09:58:04 +01:00
Fredrik Adelöw 325feafebf Update .changeset/devtools-cancel-scheduled-task.md
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-03-12 09:24:38 +01:00
Rickard Dybeck 6b6b5de514 feat(kubernetes): add DNS endpoint support to GKE cluster locator (#33297)
* feat(kubernetes): add DNS endpoint support to GKE cluster locator

Add endpointType config option to GkeClusterLocator allowing use of
DNS-based control plane endpoints instead of public IP endpoints.
When set to 'dns', the locator uses the cluster's DNS endpoint
(e.g. gke-<uid>.<region>.gke.goog) with fallback to public IP if
no DNS endpoint is available.

Signed-off-by: Rickard Dybeck <dybeck@spotify.com>

* fix: fix relevant AI review comments

Signed-off-by: Rickard Dybeck <dybeck@spotify.com>

---------

Signed-off-by: Rickard Dybeck <dybeck@spotify.com>
2026-03-11 12:09:52 -04:00
Fredrik Adelöw f80195ec3f Add changeset for devtools cancel task
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-03-11 17:01:40 +01:00
Fredrik Adelöw 89a1c313d0 catalog-backend: address review comments on search FK migration
- Close PG race window: drop old FK and add NOT VALID FK before batch
  cleanup, so no new orphans can be inserted during cleanup
- Extract batch-delete helpers (batchDeleteOrphansPg, batchDeleteOrphansMysql)
  to reduce duplication across up/down and dialects
- Fix ShareUpdateExclusiveLock comment to be more precise
- Make changeset message more descriptive

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-11 14:16:25 +01:00
Fredrik Adelöw 3644b725f8 add changeset
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-11 13:58:44 +01:00
Ben Lambert e9b6e978f1 Merge commit from fork
* fix: prevent SSRF via redirect in CIMD metadata fetch

* fix: prevent SSRF via redirect in CIMD metadata fetch

* fix: add redirect target listener to SSRF redirect test
2026-03-11 13:34:25 +01:00
Ben Lambert 4f5ed06dd1 Merge commit from fork 2026-03-11 13:33:31 +01:00
Ben Lambert 0f9d673e82 Merge commit from fork
* Fix redirect URI allowlist bypass via URL userinfo syntax

* Validate redirect URIs against normalized origin+pathname
2026-03-11 13:33:00 +01:00
github-actions[bot] ed7c4e3bef Version Packages (next) 2026-03-10 17:34:12 +00:00
Jonathan Roebuck 106d1b2a0e feat(catalog-backend-module-github): add config flag for verified email behavior (#33262)
Add a `defaultUserTransformer.useVerifiedEmails` config option to the
githubOrg provider, making the verified domain email behavior from #32997
opt-in rather than the default.

Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 16:55:53 +00:00
Johan Persson f42f4cc055 fix(ui): truncate Table column headers with ellipsis on overflow
Wrap column header text in a label span with text-overflow: ellipsis
so that long headers truncate instead of wrapping to multiple lines.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-10 17:00:38 +01:00
Johan Persson fbd5c5a93d fix(ui): only show pointer cursor on interactive Table rows
Row always passed onAction to React Aria even when no handler or
href was set, causing all rows to appear interactive. Now onAction
is only passed when there is an actual interaction. CSS explicitly
sets cursor: default on rows and scopes cursor: pointer to rows
with href, selection mode, or pressable state.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-10 17:00:38 +01:00
Fredrik Adelöw 645749d827 Merge pull request #33180 from cftad/gh-waittime
Update GitHub Scaffolder Environment Action Input Description
2026-03-10 16:41:20 +01:00
Fredrik Adelöw da2a0f974c Merge pull request #33242 from backstage/renovate/react-monorepo
fix(deps): update dependency react-refresh to ^0.18.0
2026-03-10 16:39:28 +01:00
Fredrik Adelöw 26fa44767a Merge pull request #31989 from 0xts/feat/scaffolder-logs-btn
feat: add log download btn for LogViewer
2026-03-10 16:24:26 +01:00
Fredrik Adelöw 2fe57aa333 Merge pull request #33158 from backstage/freben/move-stitch-queue-2
catalog: move stitch queue into dedicated table
2026-03-10 16:21:13 +01:00
Fredrik Adelöw 294f9fe17f Merge pull request #32377 from samarthsinh2660/fix/table-filters-title-layout
fix(core-components): fix Table layout when filters and title are used together
2026-03-10 16:19:10 +01:00
root ea82e08f4a Merge branch 'master' into range-slider-component 2026-03-10 20:29:25 +05:30
Fredrik Adelöw 422a79039b Merge pull request #32619 from kaidubauskas-dd/kaidd/fix-user-slack-dms
fix(notifications-slack): Only DM explicit user recipients
2026-03-10 15:33:57 +01:00
Fredrik Adelöw a49c59f2da Update .changeset/curvy-socks-punch.md
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-03-10 14:56:07 +01:00
Fredrik Adelöw dfdb8e3a73 Add defaultLocationConflictStrategy config option for catalog locations
Adds a catalog config option to set the default conflict strategy when
registering locations, so adopters can default to 'refresh' instead of
'reject' without requiring each caller to specify it explicitly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:35:06 +01:00
Fredrik Adelöw 5d95e8e7ac add changeset
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:35:04 +01:00
Ben Lambert d0f4cd215b feat(cli): add auth commands for OIDC login (#32920)
* feat(cli): add auth commands for OIDC login

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

* address PR review feedback

- move CIMD check before callback server start
- add try/finally for callback server cleanup
- validate URLs with human-readable errors
- deduplicate config URL candidates
- preserve selected flag on re-authentication
- delete accessToken on logout
- log token refresh to stderr in show command
- fix command descriptions to reference CIMD not DCR
- type keytar as optionalDependency, rename storage paths
- add auth-backend changeset

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

* migrate auth module from yargs to cleye pattern

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

* address PR review feedback

- consolidate storage imports in auth.ts
- add withMetadataLock to setSelectedInstance
- skip file permission tests on Windows
- clarify changeset endpoint path

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

* address review feedback from Rugvip and Copilot

- use stdout for user-facing messages instead of stderr
- remove clientSecret remnants from logout
- make refresh_token optional in token response schema
- add timeout to CIMD metadata fetch
- pass same state to callback server and authorize URL
- remove inaccurate test comment

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

* validate state in callback server, add CIMD endpoint tests

- localServer now validates the OAuth state parameter in the request
  handler and returns 400 on mismatch
- Added tests for the CIMD metadata endpoint in OidcRouter covering
  both disabled and enabled cases

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

* revert validateRequest to use Zod error details

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

* fix callback server hanging by closing keep-alive connections

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

* rename secret store service prefix to backstage-cli:auth-instance

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

---------

Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-10 13:28:25 +00:00
Fredrik Adelöw d056002e64 Merge pull request #33241 from backstage/freben/scheduler-cancel-task
Add cancelTask to SchedulerService for cancelling running tasks
2026-03-10 14:27:28 +01:00
Ben Lambert e8736ea2e8 feat(scaffolder): implementing secrets schema for scaffolder templates (#32320)
* feat: implementing secrets schema for scaffolder templates

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

* chore: fix and regenerate openapi
Signed-off-by: benjdlambert <ben@blam.sh>

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

* chore: fix review feedback

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

* fix: address code review feedback for secrets validation

- Extract validateSecrets helper to deduplicate validation logic
- Add auditorEvent.fail() call on secrets validation failure
- Sanitize instance field in error responses to prevent secret leakage
- Add retry endpoint test coverage for secrets validation
- Split changeset into per-package entries

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

* refactor: nest secrets schema under secrets.schema

Move the JSON Schema definition from spec.secrets to
spec.secrets.schema to leave room for future extensions
like secret sources.

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

* chore: update API reports

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

* chore: use InputError for secrets validation audit event

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

---------

Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-10 11:47:40 +01:00
Ben Lambert c74b69788e feat(mcp-actions): Add the ability to configure different plugins for different servers (#33235)
* feat: split MCP actions into per-plugin servers

Add mcpActions.servers config to create multiple MCP server endpoints
scoped by plugin source, with per-server include/exclude filtering.
Add mcpActions.tools for global tool description overrides.

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

* feat: namespace tool names, use filter rules for server scoping

- Tool names now use action ID (plugin:name) by default, opt out
  via mcpActions.namespacedToolNames
- Removed pluginSources from server config, use filter.include
  with id glob patterns instead
- Removed tool description overrides (deferred to followup)
- Added server key validation for route safety

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

* docs: update README for filter-based server scoping

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

* feat: drop SSE routes for split servers

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

* fix: handle empty servers config, fix test name

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

---------

Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-10 11:28:31 +01:00
Matthias Lindinger 864a7993b2 Add changeset
Signed-off-by: Matthias Lindinger <matthias.lindinger@bsb-muenchen.de>
2026-03-10 07:43:20 +01:00