Commit Graph

72954 Commits

Author SHA1 Message Date
Johan Persson fa232da324 refactor(catalog-react): migrate InspectEntityDialog from MUI to BUI
Replace Material UI components with Backstage UI (BUI) equivalents
across the InspectEntityDialog and all its tab pages (Overview,
Ancestry, Colocated, JSON, YAML).

- Dialog shell uses BUI Dialog, DialogHeader, DialogBody, Tabs
- Horizontal tab bar replaces vertical MUI tabs
- Card sections use BUI Card, CardHeader, CardBody
- Key-value pairs rendered as semantic dl/dt/dd elements
- Copy buttons use BUI ButtonIcon with remixicon icons
- Help links use BUI ButtonLink
- Alerts use BUI Alert
- Tags use BUI TagGroup/Tag
- Accessible live region for copy confirmation
- Proper heading hierarchy (h2 for tab pages, h3 for cards, h4 for sections)
- Added OverviewPage tests for identity rendering, link detection, and tags

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-07 17:20:34 +02:00
Patrik Oldsberg 8632502abe Merge pull request #33436 from jonkoops/remove-legacy-proxy-docs
docs: remove legacy corporate proxy documentation
2026-04-07 16:30:05 +02:00
Patrik Oldsberg 894cd94312 Merge pull request #33699 from drodil/notifications_bui
feat(notifications): migrate to backstage ui
2026-04-07 16:28:07 +02:00
Patrik Oldsberg 55797b8cf4 Merge pull request #33748 from backstage/freben/permissions-cleanup-step-3-wip
Remove deprecated alpha exports from @backstage/plugin-catalog-node
2026-04-07 15:08:51 +02:00
Johan Persson 386972f871 fix(ui): hide Tabs active indicator when no tab matches route
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-07 15:05:23 +02:00
Fredrik Adelöw 587981973c Merge pull request #33576 from backstage/maratd/replace-humanize-entity-ref
Replace deprecated humanizeEntityRef with Catalog Presentation API
2026-04-07 14:28:39 +02:00
Patrik Oldsberg 972edbc0eb Merge pull request #33747 from backstage/freben/migrate-techdocs-from-alpha-catalog-service-ref
Migrate techdocs plugins from alpha to stable catalogServiceRef
2026-04-07 13:54:08 +02:00
Patrik Oldsberg 43627fde49 Merge pull request #33775 from yuhanwwu/master
add incident.io plugin to the marketplace
2026-04-07 13:44:11 +02:00
Fredrik Adelöw 7a031965b1 Remove deprecated alpha exports from @backstage/plugin-catalog-node
Removes the long-deprecated re-exports from the /alpha entry point that
were only kept for backwards compatibility:

- catalogServiceRef (the CatalogApi-based legacy one)
- CatalogLocationsExtensionPoint / catalogLocationsExtensionPoint
- CatalogProcessingExtensionPoint / catalogProcessingExtensionPoint
- CatalogAnalysisExtensionPoint / catalogAnalysisExtensionPoint

All of these have non-alpha equivalents that should be used directly.

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-04-07 13:20:02 +02:00
Fredrik Adelöw 64663ede75 Merge pull request #33773 from koalaty-code/fix-mcp-actions-middleware
fix(backend-defaults): fixes actions registry http middleware conflicts
2026-04-07 13:02:57 +02:00
Fredrik Adelöw 5917638dcd Merge pull request #33753 from backstage/freben/locationlocation
catalog-backend: persist location_entity_ref in locations table
2026-04-07 12:59:38 +02:00
Marat Dyatko b32ab39670 Fix unsafe type casts via shared entityPresentationSnapshot utility
Extract entityPresentationSnapshot helper to eliminate unsafe `as Entity`
casts when passing CompoundEntityRef to EntityPresentationApi.forEntity(),
which only accepts Entity | string. The helper safely discriminates input
types and stringifies CompoundEntityRef before calling the API.

- Add entityPresentationSnapshot as a public export from catalog-react
- Remove duplicated getEntityTitle/getTitle helpers across 5 files
- Fix useAsync dependency array in TemplateFormPreviewer
- Update TSDoc across all presentation API surfaces to reference the
  new helper
- Update entity-presentation.md docs with usage guidance and migration
  table

Made-with: Cursor
Signed-off-by: Marat Dyatko <maratd@spotify.com>
2026-04-07 12:41:29 +02:00
Patrik Oldsberg 9718e62c2d Merge pull request #33667 from backstage/docs-features-new-frontend-migration
docs: migrate feature documentation to new frontend system as primary content
2026-04-07 12:01:07 +02:00
Patrik Oldsberg adf228cb16 Merge pull request #33720 from backstage/rugvip/add-to-error-utility
errors: add `toError` utility and migrate usages
2026-04-07 12:00:01 +02:00
Patrik Oldsberg a07127d4ba Merge pull request #33774 from backstage/blam/pathcy
Add some patches for release
2026-04-07 11:25:12 +02:00
deepthi-28 aa47a370eb Add CheckboxGroup story and initial implementation (#33051)
* Add CheckboxGroup story and initial implementation

Signed-off-by: Deepthi Ajith <deepthi.ajith@infosys.com>

* Add CheckboxGroup implementation and docs coverage

Signed-off-by: Deepthi Ajith <deepthi.ajith@infosys.com>

* update api-reports

Signed-off-by: Deepthi Ajith <deepthi.ajith@infosys.com>

* fix: add more story variations, docs page, and fix JSDoc comments

Signed-off-by: Deepthi Ajith <deepthi.ajith@infosys.com>

* fix: address review feedback for CheckboxGroup component

Signed-off-by: Deepthi Ajith <deepthi.ajith@infosys.com>

---------

Signed-off-by: Deepthi Ajith <deepthi.ajith@infosys.com>
2026-04-07 10:58:29 +02:00
Yuhan Wu 5734a25545 format
Signed-off-by: Yuhan Wu <yuhanwu@DN66YYQWHX.local>
2026-04-07 09:51:35 +01:00
Yuhan Wu f132217505 run prettier and add status
Signed-off-by: Yuhan Wu <yuhanwu@DN66YYQWHX.local>
2026-04-07 09:19:35 +01:00
Yuhan Wu 1b5afabb12 add incident.io plugin to the marketplace
Signed-off-by: Yuhan Wu <yuhanwu@DN66YYQWHX.local>
2026-04-07 09:19:35 +01:00
backstage-goalie[bot] 38950237e3 Merge pull request #33780 from backstage/renovate/rspack-monorepo
chore(deps): update dependency @rspack/core to v1.7.11
2026-04-06 23:29:28 +00:00
renovate[bot] d2a724010c chore(deps): update dependency @rspack/core to v1.7.11
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-06 22:42:07 +00:00
backstage-goalie[bot] 1efbb7938a Merge pull request #33779 from backstage/renovate/npm-vite-vulnerability
chore(deps): update dependency vite to v7.3.2 [security]
2026-04-06 22:36:59 +00:00
renovate[bot] 9404b50a7e chore(deps): update dependency vite to v7.3.2 [security]
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-06 21:53:30 +00:00
Aramis Sennyey 9bca597026 fix: prevent backend server from hanging during e2e test (#32494)
* fix: prevent backend server from hanging during e2e test

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* add changeset

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* delete changeset

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

---------

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-04-06 14:09:52 -04:00
benjdlambert f289cd4e74 chore: woops naming
Signed-off-by: benjdlambert <ben@blam.sh>
2026-04-06 19:20:24 +02:00
benjdlambert 7aaa947c7a chore: fix
Signed-off-by: benjdlambert <ben@blam.sh>

Signed-off-by: benjdlambert <ben@blam.sh>
2026-04-06 19:20:18 +02:00
Ben Lambert 5af48e77af feat(scaffolder): Migrate scaffolder to use permissions registry (#33740)
* feat(scaffolder-node): add PermissionResourceRef definitions for scaffolder resource types

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

* feat(scaffolder-backend): migrate to PermissionsRegistryService with fallback

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

* feat(scaffolder-backend): wire permissionsRegistry in ScaffolderPlugin

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

* test(scaffolder-backend): verify permissions metadata endpoint returns all scaffolder permissions

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

* chore: add changesets for scaffolder permissions registry migration

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

* chore: format scaffolder-node alpha exports

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

* fix: correct scaffolder-node changeset to patch for sub-1.0 package

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

* refactor(scaffolder-backend): simplify by removing fallback path and making permissionsRegistry required

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

* chore: update scaffolder-node API report

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

---------

Signed-off-by: benjdlambert <ben@blam.sh>
2026-04-06 19:10:43 +02:00
Gabriel Dugny 282c11475f fix: OAuth 2.0 Protected Resource Metadata returning local endpoint (fix #33062) (#33092)
* fix: OAuth 2.0 Protected Resource Metadata returning local endpoint (fix #33062)

Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>

* chore: add basic regression test

Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>

---------

Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
2026-04-06 19:04:12 +02:00
Adam Letizia 85c5a4643b fix(backend-defaults): fixes actions registry http middleware conflicts
Signed-off-by: Adam Letizia <LetiziaAdam@JohnDeere.com>
2026-04-06 10:52:29 -05:00
Fredrik Adelöw dd48192606 Merge pull request #33410 from lokeshkaki/feat/bitbucket-cloud-scm-events
feat(catalog-backend-module-bitbucket-cloud): add Bitbucket Cloud SCM event translation and bridge wiring
2026-04-06 11:15:13 +02:00
Patrik Oldsberg d8976ea648 Merge pull request #33723 from Parsifal-M/docs/update-fe-migration-skill
Edit the SubPageBluepring instructions section
2026-04-05 22:11:52 +02:00
Patrik Oldsberg 5c9b621ffb Merge pull request #33760 from backstage/rugvip/parter-cleanup
docs: update commercial partners and FAQ
2026-04-05 21:59:29 +02:00
Patrik Oldsberg f0fb2aec37 microsite: prettier fix
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-04-05 21:49:16 +02:00
Patrik Oldsberg 76fdf2cb31 docs: update FAQ about commercial Backstage offerings
Update the question about hosted/commercial versions of Backstage
to be vendor-neutral and link to the commercial partners page.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-05 19:38:20 +02:00
Patrik Oldsberg ee18ff20c5 microsite: update commercial partners list
Remove solo.io, VMware, and Alauda as commercial partners due to
broken/irrelevant landing pages. Add Spotify for Backstage as a
partner. Sort partners alphabetically and normalize logo sizes
with per-partner height control.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-05 19:26:33 +02:00
Fredrik Adelöw 42d0a2749a Clarify migration comment: nullable-first is about NOT NULL without DEFAULT
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-05 14:22:09 +02:00
Patrik Oldsberg 262bc296a4 Merge pull request #33754 from kurtaking/migrate-google-pubsub-alpha-metrics
Migrate to MetricsService
2026-04-05 12:04:14 +02:00
Fredrik Adelöw 6941ae10f3 Add literal-value assertion for location_entity_ref in store test
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-05 10:37:32 +02:00
Patrik Oldsberg b592810c5f Fix duplicate frontmatter IDs in old-system doc pages
Prefix the frontmatter `id` in the --old variants with their
feature area (techdocs-/search-) so Docusaurus no longer reports
duplicate doc ID collisions.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-04 23:51:04 +02:00
Fredrik Adelöw 2514e30734 Fix misleading comment about bootstrap row in migration test
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-04 22:57:11 +02:00
Fredrik Adelöw 51c45e7ae3 Remove per-batch round trips for Postgres unnest migration
The Postgres unnest UPDATE uses a fixed-size SQL string; only the array
bindings grow. The planner executes it with an index nested-loop (O(N)),
so batching only adds network round trips without reducing work. Run the
entire backfill in a single statement.

MySQL keeps its MYSQL_BATCH_SIZE=1000 because the UNION ALL SQL text
grows linearly with batch size, so smaller packets are important there.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-04 22:41:29 +02:00
Fredrik Adelöw b21576575d Use string column and stringifyEntityRef for location_entity_ref
Switch the migration column type from text to string (varchar(255)),
since entity refs are always short. Also use stringifyEntityRef in
computeLocationEntityRef to handle lowercasing canonically.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-04 22:24:36 +02:00
Fredrik Adelöw d16311f310 catalog-backend: persist location_entity_ref in locations table
Adds a migration that populates a new `location_entity_ref` column on the
`locations` table with the full entity ref of the corresponding
`kind: Location` entity (e.g. `location:default/generated-<sha1hex>`).
Postgres uses an unnest-based batch UPDATE; other engines use a
transaction-wrapped per-row loop.

All code paths in DefaultLocationStore that previously recomputed the hash
from type+target now read `location_entity_ref` directly from the DB row
instead. New rows written by `createLocation` and `#createLocationsByExactUrl`
have the column populated at insert time.

This is step 1 of migrating Location entity names to be based on the stable
row UUID rather than a hash of the mutable target URL.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
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-04-04 22:19:26 +02:00
Kurt King ea0d31a1bc Merge branch 'master' of https://github.com/backstage/backstage into migrate-google-pubsub-alpha-metrics 2026-04-04 13:33:39 -06:00
Fredrik Adelöw 98d9a75dc2 Merge pull request #33632 from wpessers/feat/github-catalog-backend-extensiont/add-retry-to-github-client
feat(catalog): add retries to octokit client
2026-04-04 17:20:22 +02:00
Patrik Oldsberg 7f6b88783b docs: address review feedback on route refs, typos, and installation steps
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-04 16:15:01 +02:00
Fredrik Adelöw 323da94780 Use mockCredentials in CachedEntityLoader tests and simplify cache key
Replace hand-crafted BackstageCredentials objects with mockCredentials
from @backstage/backend-test-utils, which have proper toString() methods.
Simplify getCacheKey to use String(credentials) directly and remove the
auth service dependency from CachedEntityLoader.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-04 13:52:58 +02:00
Patrik Oldsberg fb571af4ee fix: correct broken doc links in search getting-started guides
Update links to removed how-to-guides anchors (#how-to-index-techdocs-documents
and #how-to-limit-what-can-be-searched-in-the-software-catalog) to point to the
existing #how-to-customize-fields-in-the-software-catalog-or-techdocs-index
anchor instead. Also update the old frontend system guide to link to the
--old variants of how-to-guides.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-04 12:47:25 +02:00
Patrik Oldsberg 18fde07e06 docs: address review feedback on code style in examples
Replace `Promise.resolve(...)` with `async` functions in scaffolder
FormFieldBlueprint.make examples, and switch the TechDocs custom home
page example to use the `plugin.withOverrides` pattern instead of
`createFrontendModule`.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-04 12:34:50 +02:00
Fredrik Adelöw e7fdf2997f Address Copilot review: fix pagination test and add credentials assertion
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-03 23:23:42 +02:00