21074 Commits

Author SHA1 Message Date
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 164711a61f Add changeset for backend-test-utils cancelTask addition
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-09 22:18:23 +01:00
renovate[bot] 4a75544809 fix(deps): update dependency react-refresh to ^0.18.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 21:06:46 +00:00
Fredrik 015668c5d2 Add cancelTask to SchedulerService for cancelling running tasks
Adds the ability to cancel currently running scheduled tasks via a new
cancelTask method on the SchedulerService interface. For global (distributed)
tasks, the database lock is released and a periodic liveness check detects
the lost ticket and aborts the task function's AbortSignal. For local tasks,
the abort signal is triggered directly. Also adds a REST endpoint at
POST /.backstage/scheduler/v1/tasks/:id/cancel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-09 22:00:44 +01:00
Sander van Delden cd0ecc50b1 feat(plugin-scaffolder-node/githelpers): add function to stage files for removal
Signed-off-by: Sander van Delden <38953576+SanderDelden@users.noreply.github.com>
2026-03-09 17:20:05 +01:00
abdellahhanane ed5d1ea15c Apply PR comments
Signed-off-by: abdellahhanane <abdellahhanane44@gmail.com>
2026-03-09 10:29:10 -04:00
Fredrik Adelöw 9c878c6326 Merge pull request #33201 from backstage/renovate/flatted-3.x
fix(deps): update dependency flatted to v3.3.4
2026-03-09 13:15:38 +01:00
Fredrik Adelöw dd59aeb842 Merge pull request #33187 from lokeshkaki/fix/scheduler-abort-signal-msgraph
fix(catalog): propagate AbortSignal in MicrosoftGraphOrgEntityProvider to fix stuck scheduler task
2026-03-09 12:09:24 +01:00
Fredrik Adelöw 133d5ebe33 Merge pull request #33182 from backstage/renovate/npm-express-rate-limit-vulnerability
fix(deps): update dependency express-rate-limit to v8 [security]
2026-03-09 11:59:49 +01:00
Patrik Oldsberg ad7c883dee Deprecate HeaderPage in favor of Header in @backstage/ui (#33188)
* Deprecate HeaderPage in favor of Header in @backstage/ui

Rename the HeaderPage component to Header, keeping HeaderPage as a
deprecated alias for backwards compatibility. Also deprecate
HeaderPageProps, HeaderPageOwnProps, HeaderPageBreadcrumb, and
HeaderPageDefinition with new Header* equivalents. Update all internal
usages, stories, and docs-ui documentation to use the new names.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Rename HeaderPage files and directories to Header

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Add changeset for mui-to-bui Header rename

Document the plugin release impact of switching the MUI to BUI theme converter page to the renamed Header component.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

---------

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-09 11:52:19 +01:00
renovate[bot] bd31ddd026 fix(deps): update dependency flatted to v3.3.4
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-07 22:57:05 +00:00
Timo Sand c81c668368 Upgrade graphiql to ^3.9.0, pin @graphiql/react to `0.29.0
`@graphiql/react` 0.30.0 requires `graphiql` v4

Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:49:50 +02:00
Timo Sand 07473a5c9d Move graphql-config to devDependencies
Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:42 +02:00
Timo Sand 254fd073c1 Update changeset
Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:42 +02:00
Timo Sand 032d56d590 Update changeset
Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:42 +02:00
Timo Sand 86fe66be6b Update changeset
Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:41 +02:00
Timo Sand ca277ef055 Add changeset
Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:41 +02:00
Andre Wanlin 1eaf17a276 Merge pull request #32061 from elaine-mattos/feat/add-description-plugin-feature-flags
feat(core-plugin-api): add optional description to plugin feature flags
2026-03-07 12:47:26 -06:00
Lokesh Kaki 97eaecf50f chore: add changeset for AbortSignal fix in msgraph provider
Signed-off-by: Lokesh Kaki <lokeshkaki1@gmail.com>
2026-03-06 23:08:54 -06:00
renovate[bot] 5fcbef2627 fix(deps): update dependency express-rate-limit to v8 [security]
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 19:49:03 +00:00
Timothy Deakin 83d3057ae2 Update .changeset/ten-terms-matter.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Timothy Deakin <cftad@protonmail.com>
2026-03-06 17:52:56 +00:00
Timothy Deakin b2591f6ce0 fix: update env waittime description
Signed-off-by: Timothy Deakin <cftad@protonmail.com>
2026-03-06 17:34:37 +00:00
Johan Persson d14b6e07f1 feat(org,catalog-graph)!: migrate MembersListCard, OwnershipCard, and CatalogGraphCard to BUI (#33177)
* feat(org): migrate MembersListCard to BUI EntityInfoCard

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(org)!: migrate OwnershipCard to BUI EntityInfoCard

Replaced MUI InfoCard with BUI EntityInfoCard in OwnershipCard.
Removed the `variant` and `maxScrollHeight` props since card sizing
and scrolling are now handled by the BUI layout. Wrapped body content
in a flex column div to keep the relations toggle pinned while the
grid scrolls. Updated app-legacy and create-app templates to remove
the dropped `variant` prop.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(catalog-graph)!: migrate CatalogGraphCard to BUI EntityInfoCard

Replace MUI InfoCard with BUI EntityInfoCard in CatalogGraphCard.
The `variant` prop is removed — card sizing is now handled by the
BUI layout system. The deep link is replaced with a footer Link.

Remove `variant="gridItem"` from all EntityCatalogGraphCard usages
in app-legacy and create-app templates.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(catalog-react): export useEntityRoute hook

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(cli): update translation extraction test for renamed org keys

Signed-off-by: Johan Persson <johanopersson@gmail.com>

---------

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-06 16:19:31 +01:00
Patrik Oldsberg d9fb094376 Merge pull request #33061 from backstage/rugvip/migrate-cli-to-cleye
cli: migrate remaining commands from commander to cleye
2026-03-06 15:59:09 +01:00
Patrik Oldsberg 08b0a7f933 Add deprecation warnings for camelCase flag usage
Log a warning to stderr when users pass the camelCase form of flags
that now have kebab-case as the canonical spelling. The old forms
still work (type-flag handles both natively) but users should migrate.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-06 15:13:58 +01:00
Patrik Oldsberg c28e6a7b1c Remove unnecessary deprecation warnings for camelCase flags
type-flag natively supports both camelCase and kebab-case for all
flags, so no deprecation warnings or normalization are needed for
casing variants. Only the --alwaysYarnPack alias (a genuinely
different name) still requires normalization in buildWorkspace.

Also inlined flagDefs at each call site and updated the changeset
to reflect that both flag forms work transparently.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-06 14:52:11 +01:00
Johan Persson 12d8afe82d feat(ui): add analytics event tracking to BUI navigation components (#33150)
* feat(ui): add analytics types

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add useAnalytics hook with dev-mode swap guard

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add AnalyticsProvider, getNodeText, and analytics barrel exports

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): integrate analytics into defineComponent and useDefinition

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to Link component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to ButtonLink component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to Tab component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to MenuItem component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to Tag component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to Table Row component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): widen getNodeText to accept render functions

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore(ui): update API reports

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: add changeset for BUI analytics

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(ui): chain MenuItem onAction with user-provided handler instead of overwriting

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore(ui): address review feedback — changeset wording and types docs

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(core-app-api): wire AnalyticsProvider from @backstage/ui into app shell

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(plugin-app): add AnalyticsProvider wrapper extension for BUI components

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: update API reports

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: update API reports for core-components and scaffolder

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* docs(ui): add analytics documentation and noTrack prop to component docs

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: update yarn.lock

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(plugin-app): move AnalyticsProvider into AppRoot directly

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: format installation docs

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(ui): call user onPress before analytics in Tag component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* refactor(ui): replace AnalyticsProvider with generic BUIProvider

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: replace remaining AnalyticsProvider references with BUIProvider

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(plugin-app): import useAnalytics from frontend-plugin-api

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* docs(ui): improve noTrack prop description

Signed-off-by: Johan Persson <johanopersson@gmail.com>

---------

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-06 14:45:57 +01:00
Patrik Oldsberg 9fb3b18393 Merge pull request #33159 from backstage/rugvip/cli-hidden-commands
cli: add support for experimental commands
2026-03-06 14:02:45 +01:00
Patrik Oldsberg a4e59024c0 Add support for experimental commands in the CLI module API
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-06 13:17:46 +01:00
Fredrik Adelöw 874456a249 catalog: simplify stitch_queue to single ticket, fix down migration
Remove unused active_ticket column and rename latest_ticket back to
stitch_ticket. Use knex.batchInsert in the up migration. Fix the down
migration to restore stitch_ticket on final_entities without a server-side
default, matching the original schema exactly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-06 11:59:16 +01:00
Patrik Oldsberg edb872c49a Rename PageTab to PageLayoutTab in @backstage/frontend-plugin-api
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-06 11:21:32 +01:00
Kai Dubauskas 2eec3ecc09 changelog wording
Signed-off-by: Kai Dubauskas <kai.dubauskas@doordash.com>
2026-03-05 18:18:04 -05:00
Kai Dubauskas 878e73bd4b changelog wording
Signed-off-by: Kai Dubauskas <kai.dubauskas@doordash.com>
2026-03-05 18:17:37 -05:00
Kai Dubauskas 12a0ccb278 only dm original user entities
Signed-off-by: Kai Dubauskas <kai.dubauskas@doordash.com>
2026-03-05 18:14:42 -05:00
Fredrik Adelöw bf59528fb9 catalog: remove stitch_ticket from final_entities, use two-ticket model in stitch_queue
Replace the single stitch_ticket column in final_entities with a two-ticket
model (latest_ticket + active_ticket) in stitch_queue for optimistic
concurrency control. When picking up stitch work, active_ticket is set to
latest_ticket. Before writing results, the stitcher checks that latest_ticket
hasn't changed. This fully decouples stitching concurrency from final_entities.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-05 23:03:38 +01:00
Fredrik Adelöw 7416e8b0c0 catalog: move the stitch queue concerns into a dedicated stitch_queue table
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-05 22:26:33 +01:00
dependabot[bot] 9795d3022b chore(deps): bump dompurify from 3.3.1 to 3.3.2
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.3.1...3.3.2)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.3.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 19:18:40 +00:00
John Collier 4445d88cff address pr review feedback
Signed-off-by: John Collier <jcollier@redhat.com>
2026-03-05 10:54:33 -05:00
Johan Persson 430d5ed323 fix(ui): allow CardBody scrolling in interactive cards (#33151)
* refactor(ui): rename CardOverlay to CardTrigger

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* refactor(ui): replace Card overlay with visually-hidden trigger and focus ring

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): implement hybrid click delegation for interactive cards

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* docs(ui): add story for interactive scrollable card

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: add changeset for interactive card scroll fix

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(ui): fix bottom scroll shadow showing when CardBody has no overflow

The reversed scroll-driven animation used `both` fill mode, causing the
backwards fill to show opacity: 1 when no scroll timeline was active.
Replace with two stacked animations using `forwards` fill only.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* docs(ui): update InteractiveScrollable story to use onPress

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* style: format Card.module.css

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(ui): guard against Text node target in Card click handler

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): render Card as article element for better semantics

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore(ui): update API report

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(ui): prevent synthetic click from double-bubbling and exclude onClick from Card types

Signed-off-by: Johan Persson <johanopersson@gmail.com>

---------

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-05 14:57:00 +00:00
Patrik Oldsberg 4c32f367e4 Merge pull request #33149 from backstage/rugvip/deprecate-mock-api-exports
frontend-test-utils: deprecate standalone mock API exports
2026-03-05 15:22:47 +01:00
Patrik Oldsberg d9e999a631 Merge pull request #33152 from backstage/rugvip/use-api-holder-no-throw
frontend-plugin-api: change `useApiHolder` to not throw outside API context
2026-03-05 14:10:02 +01:00
Patrik Oldsberg 3b0c46e272 deprecate MockFetchApi class, keep MockFetchApiOptions
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-05 13:56:51 +01:00
Patrik Oldsberg a462d9ae8b Merge pull request #33148 from backstage/rugvip/move-extensionFactoryMiddleware-to-frontend-app-api
Move `ExtensionFactoryMiddleware` from frontend-plugin-api to frontend-app-api
2026-03-05 13:56:01 +01:00
Patrik Oldsberg 0f61db8bfe Merge pull request #33147 from backstage/rugvip/simplify-extension-attach-to
Simplify the `ExtensionAttachTo` type
2026-03-05 13:52:02 +01:00
Patrik Oldsberg 9581cdfbc5 Merge pull request #33144 from backstage/rugvip/remove-any-extension-data-ref
Remove deprecated `AnyExtensionDataRef` type
2026-03-05 13:51:54 +01:00
Patrik Oldsberg be07392d48 Merge pull request #33143 from backstage/rugvip/remove-allowUnknownExtensionConfig
Remove `allowUnknownExtensionConfig` option from frontend app APIs
2026-03-05 13:51:46 +01:00
Patrik Oldsberg f41cd2478e Merge pull request #33142 from backstage/rugvip/deprecate-nav-item-blueprint
Deprecate NavItemBlueprint in @backstage/frontend-plugin-api
2026-03-05 13:51:00 +01:00
Patrik Oldsberg 1408dfc6ca Merge pull request #33141 from backstage/rugvip/deprecate-withApis-frontend-plugin-api
Deprecate `withApis` in `@backstage/frontend-plugin-api`
2026-03-05 13:50:53 +01:00
Patrik Oldsberg 9989e9f98d Merge pull request #33139 from backstage/rugvip/move-analytics-blueprint-to-app-react
Move AnalyticsImplementationBlueprint to @backstage/plugin-app-react
2026-03-05 13:50:43 +01:00