74233 Commits

Author SHA1 Message Date
Fredrik Adelöw cbc012c664 Merge pull request #32340 from Believe-SA/docs/hooks
feat(docs-ui): document BUI's hooks
2026-03-10 16:29:22 +01:00
Fredrik Adelöw c07c27d2b1 Merge pull request #33258 from backstage/freben/fix-e2e
fix end to end tests
2026-03-10 16:27:40 +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 1b116e4160 Merge pull request #33210 from backstage/renovate/changesets-cli-2.x-lockfile
chore(deps): update dependency @changesets/cli to v2.30.0
2026-03-10 16:23:34 +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
Fredrik Adelöw a302ac285c fix end to end tests
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 16:16:12 +01:00
AmbrishRamachandiran 2e00fb7e70 Fix review comments added single slider
Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>
2026-03-10 20:37:15 +05:30
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 3b38dd0249 fix: mock fromTemporaryCredentials at module boundary instead of nested STS client
Replace the @aws-sdk/nested-clients/sts mock with a mock of
fromTemporaryCredentials itself. This avoids depending on AWS SDK
internal implementation details while still verifying that the correct
role ARN, session name, and external ID are passed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 15:29:30 +01:00
Fredrik Adelöw 241aa36b00 Merge pull request #33221 from backstage/freben/add-location-on-conflict-refresh
Add onConflict option to location registration endpoint
2026-03-10 15:19:31 +01:00
Fredrik Adelöw 63746129b2 reports
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 15:18:11 +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 5dc320ed5e remove unnecessary cast
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:39:01 +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 d3796b6165 Fix OpenAPI spec linting errors
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:35:05 +01:00
Fredrik Adelöw 05a3e13b88 Add test for onConflict refresh updating refresh_state
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:35:05 +01:00
Fredrik Adelöw e8dc06d2e9 Clean up test assertions for createLocation options
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:35:05 +01:00
Fredrik Adelöw 67fa705515 Use direct DB update for onConflict refresh instead of RefreshService
Simplify by updating refresh_state directly (next_update_at=now,
result_hash='') to force reprocessing, removing the need for
RefreshService wiring in the location store.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:35:04 +01:00
Fredrik Adelöw ced73ba3a0 Move onConflict refresh logic into DefaultLocationStore
The store now owns the conflict resolution and refresh logic directly,
keeping DefaultLocationService as a thin pass-through layer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:35:04 +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
Fredrik Adelöw 32e9499caf Add onConflict query parameter to POST /locations endpoint
Adds an optional `onConflict` query parameter to the location creation
endpoint. When set to 'refresh', a conflict due to an already-registered
location triggers a refresh of the existing location entity instead of
returning a 409 error. The default behavior ('reject') is unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:35:04 +01:00
Fredrik Adelöw 6c865dbd1d fix: use AWS_SHARED_CREDENTIALS_FILE instead of smithy internals in tests
Replace the brittle @smithy/shared-ini-file-loader internals hack with
temp credential files and AWS_SHARED_CREDENTIALS_FILE/AWS_CONFIG_FILE
env vars, which is the official AWS SDK mechanism for this.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:29:39 +01:00
Fredrik Adelöw d3cb061c5f Update packages/integration-aws-node/src/DefaultAwsCredentialsManager.test.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-03-10 14:29:39 +01:00
Fredrik Adelöw f3f5cac4d1 fix: update DefaultAwsCredentialsManager tests for new AWS SDK internals
The AWS SDK now uses @aws-sdk/nested-clients/sts internally in
fromTemporaryCredentials, so the tests need to mock both the regular
and nested STS clients. Also adapts to the new $source metadata on
credentials and the new @smithy/shared-ini-file-loader for ini profile
mocking.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:29:39 +01:00
Fredrik Adelöw 7a1278bc0b fix: cast ListObjectsV2Command to any to fix type mismatch with @aws-sdk/middleware-endpoint
After bumping aws-sdk packages, @smithy/middleware-endpoint and
@aws-sdk/middleware-endpoint have incompatible EndpointParameterInstructions
types. Since this is already a workaround, casting to any is appropriate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:29:39 +01:00
Fredrik Adelöw 54a101a895 bump aws-sdk to get rid of critical fast-xml-parser warning
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 14:29:36 +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
Fredrik Adelöw c0b9c63be4 Fix TypeScript error in MockSchedulerService test
Use non-null assertion for resolveBlock since TypeScript cannot track
the async reassignment across the setTimeout boundary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 13:59:40 +01:00
Fredrik Adelöw 25157bec8d Fix AbortController reuse after cancel and prevent overlapping liveness checks
Reset AbortController in MockSchedulerService after cancelTask so
subsequent triggerTask calls receive a fresh signal. Replace setInterval
with a self-scheduling setTimeout loop for liveness checks in TaskWorker
to prevent overlapping DB queries when a check takes longer than the
polling interval.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 13:49:38 +01:00
Matthias Lindinger a6b90538ef Add test case
Signed-off-by: Matthias Lindinger <matthias.lindinger@bsb-muenchen.de>
2026-03-10 13:46:03 +01:00
Fredrik Adelöw 0899cb2cee Fix cancelTask to reschedule next run instead of permanently stopping task
The static cancel() now reads task settings from the DB and computes
the next_run_start_at, so cancelled tasks get picked up again on their
normal schedule. Also stops the liveness check polling immediately on
first detection of a cancelled task.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 11:47:51 +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
AmbrishRamachandiran 993e272418 Fix review comments added single slider
Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>
2026-03-10 14:00:22 +05:30
AmbrishRamachandiran 37b7ca137c Fix review comments added single slider
Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>
2026-03-10 13:03:06 +05:30
AmbrishRamachandiran 41ec1e20e2 Fix review comments added single slider
Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>
2026-03-10 12:41:34 +05:30
Matthias Lindinger 864a7993b2 Add changeset
Signed-off-by: Matthias Lindinger <matthias.lindinger@bsb-muenchen.de>
2026-03-10 07:43:20 +01:00
AmbrishRamachandiran 62cf259d80 Fix review comments added single slider
Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>
2026-03-10 11:59:38 +05:30
AmbrishRamachandiran 5d4094c785 Fix review comments added single slider
Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>
2026-03-10 11:43:42 +05:30
AmbrishRamachandiran 3ae5a679b2 Fix review comments added single slider
Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>
2026-03-10 10:51:16 +05:30
Aditya Kumar 9e88f0ce40 made changes suggested by copilot
Signed-off-by: Aditya Kumar <aditya.kumar60@infosys.com>
2026-03-10 10:24:51 +05:30
Aditya Kumar 08c922e557 migrate ConfigContent component to Backstage UI
Signed-off-by: Aditya Kumar <aditya.kumar60@infosys.com>
2026-03-10 09:53:18 +05:30
renovate[bot] 9599697048 chore(deps): update dependency globals to v17
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-10 03:44:26 +00:00
Fredrik Adelöw 64073a4290 Merge pull request #33229 from backstage/freben/fix-flaky-techdocs-reader-state-test
fix(techdocs): fix flaky useReaderState stale content test
2026-03-10 04:34:25 +01:00
Iury Lenon Alves 346d3302c2 docs: fix markdown hierarchy and apply copilot suggestions
Signed-off-by: Iury Lenon Alves <iuryalves.uk@gmail.com>
2026-03-09 22:54:42 +00:00
Iury Lenon Alves d4199a9d28 docs: add required app-config for backstage-openapi module
Signed-off-by: Iury Lenon Alves <iuryalves.uk@gmail.com>
2026-03-09 22:17:21 +00:00
Iury Lenon Alves f75764c717 docs: move backstage openapi docs to configuration.md and add install steps
Signed-off-by: Iury Lenon Alves <iuryalves.uk@gmail.com>
2026-03-09 22:15:39 +00:00