Commit Graph

933 Commits

Author SHA1 Message Date
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
github-actions[bot] c1b510cabb Version Packages (next) 2026-03-24 14:54:00 +00:00
github-actions[bot] 5725b5fcfa Version Packages 2026-03-17 21:39:07 +00:00
Patrik Oldsberg 6a565f6880 Merge pull request #33389 from backstage/rugvip/nfs-header-page-migration
plugins: migrate NFS pages to HeaderPage
2026-03-17 22:16:12 +01:00
Patrik Oldsberg 717bbaf075 Fix alpha entry point translation ref re-exports to use @alpha instead of @public
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 17:50:25 +01:00
Patrik Oldsberg 0be2541b5c Promote translation refs from alpha to stable entry points
Add each plugin and package translation ref to the corresponding stable
entry point, changing the JSDoc tag from @alpha to @public. The alpha
entry points now re-export with a @deprecated annotation so existing
consumers continue to work.

Affected packages: core-components, api-docs, catalog, catalog-graph,
catalog-import, catalog-react, home, home-react, kubernetes,
kubernetes-cluster, kubernetes-react, notifications, org, scaffolder,
scaffolder-react, search, search-react, user-settings.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 17:50:25 +01:00
Gabriel Dugny 49171c9de4 chore: Update all imports to zod/v3
Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
2026-03-17 16:48:42 +01:00
Johan Persson c548a0ff86 refactor(catalog,api-docs): migrate entity table cards to BUI (#33260)
* feat(catalog-react): add EntityDataTable and EntityRelationCard components

Add EntityDataTable (BUI Table wrapper for entity data) and
EntityRelationCard (card shell + data fetching + table) as shared
building blocks for entity relation table cards. Includes BUI column
factories, column presets for common entity types, and a new
translation key for the empty state help link.

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

* refactor(catalog): migrate 8 entity table cards to EntityRelationCard

Rewrite HasComponentsCard, HasResourcesCard, HasSubcomponentsCard,
HasSubdomainsCard, HasSystemsCard, DependsOnComponentsCard,
DependsOnResourcesCard, and DependencyOfComponentsCard as thin
wrappers around EntityRelationCard from catalog-react. Remove variant
and tableOptions props.

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

* refactor(api-docs): migrate 5 entity table cards to EntityRelationCard

Rewrite ConsumedApisCard, ProvidedApisCard, HasApisCard,
ConsumingComponentsCard, and ProvidingComponentsCard to use
EntityRelationCard from catalog-react. Add BUI column presets for
API-specific columns alongside existing MUI presets. Remove variant
and tableOptions props.

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

* chore: add API reports and changesets for entity table card migration

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

* fix(catalog-react,api-docs): refine entity card migration

Use BUI Alert for error states and BUI Link for empty state help
links in EntityRelationCard instead of core-components. Replace MUI
ToggleButton with BUI ButtonIcon for the API definition column.
Add trailing periods to empty state translation messages. Fix tests
asserting on removed external link icon SVG.

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

* feat(catalog-react): add column sorting to EntityDataTable

Introduce EntityColumnConfig extending ColumnConfig with an optional
sortValue getter. EntityDataTable now uses useTable with a sortFn
that reads sortValue from each column, restoring the per-column
sorting that the old core-components Table provided by default. All
built-in column factories set isSortable and sortValue.

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

* fix(api-docs): use dynamic entity kind in empty state messages

Restore entity.kind interpolation in ConsumedApisCard, ProvidedApisCard,
and HasApisCard empty state translations instead of hardcoded strings.

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

* fix(catalog-react): use data length for useTable pageSize

Replace pageSize: Infinity with tableData.length to avoid potential
edge cases in pagination math.

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

* fix(catalog-react): avoid this binding in column factories

Use columnFactories.createEntityRelationColumn instead of
this.createEntityRelationColumn so the methods work when
destructured.

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

* chore: update alpha API reports

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

* fix(create-app): remove variant prop from migrated entity cards in template

The create-app template EntityPage still passed variant="gridItem"
to cards that no longer accept it.

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

* test(catalog-react): add tests for EntityDataTable and EntityRelationCard

Cover rendering with data, empty state, error state, and column
sorting for EntityDataTable. Cover title rendering, empty state
with help link, related entity display, and error state for
EntityRelationCard.

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

* refactor(catalog,api-docs): add backwards compatibility for legacy props

Support both old (variant, columns, tableOptions) and new (columnConfig)
props via a discriminated union type. When legacy props are detected the
old MUI-based implementation is used; otherwise the new BUI-based
EntityRelationCard renders. This avoids immediate breaking changes and
provides a migration path. Changesets downgraded from major/minor to
minor/patch accordingly.

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

* refactor(catalog-react,catalog,api-docs): address review feedback

Remove BaseProps types and use inline union in component signatures.
Move EntityDataTable, EntityRelationCard, and related types to alpha
exports. Group column presets and help links into entityColumnPresets
object. Update all consumers and API reports.

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

---------

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-17 14:33:45 +00:00
Patrik Oldsberg f4a1edd2b0 Align NFS headers with existing BUI page patterns
Update migrated NFS pages to use the existing HeaderPage contract instead of extending Backstage UI, and move DevTools to real subpages with the legacy DevTools content blueprint removed.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 15:05:38 +01:00
Patrik Oldsberg aa29b508d1 Migrate NFS pages to HeaderPage
Always render the plugin header for page blueprints and move page-level actions into the Backstage UI header pattern for affected NFS pages.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 15:05:38 +01:00
Patrik Oldsberg be30fe0e03 Merge pull request #33193 from backstage/rugvip/nfs-icon-sizing
frontend-app-api: align icon sizing in nfs
2026-03-17 00:53:11 +01:00
Patrik Oldsberg 55b18a3c2e Merge pull request #33113 from backstage/rugvip/docs-frontend-plugin-installation
docs: default frontend plugin docs to the new frontend system
2026-03-16 22:08:47 +01:00
Patrik Oldsberg ed8d9ce67c further NFS icon migration and alignment
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-16 21:39:40 +01:00
Patrik Oldsberg 98b6b9701b Address review feedback on plugin README updates
- Apply freben's suggested wording for old frontend system sections to
  clarify they can be skipped on the new frontend system
- Fix scaffolder README: add missing imports (AnyApiFactory,
  scmIntegrationsApiRef), closing bracket, and update link text
- Fix devtools README: correct closing tag from `</ FlatRoutes>` to
  `</FlatRoutes>`
- Fix kubernetes README: reword "must be explicitly added" to avoid
  conflicting with feature discovery paragraph

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-16 13:20:01 +01:00
github-actions[bot] ed7c4e3bef Version Packages (next) 2026-03-10 17:34:12 +00:00
Fredrik Adelöw ace86adcf7 Update plugins/api-docs/src/setupTests.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-03-09 14:38:17 +01:00
Fredrik Adelöw 49a130c68c bump a timeout somewhat
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-09 14:31:13 +01: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 9951a325fd Switch to using range for @graphiql/react version
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Timo Sand <timo.sand@iki.fi>
2026-03-07 21:12:43 +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 f5b132e725 Pin graphiql actually to 3.8.3
Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:42 +02:00
Timo Sand 26a4d0c387 Remove graphql-config as it was unused
It was originally added due to missing peer dependency in `graphql-language-service`, but that also used it only for type imports

Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:41 +02:00
Timo Sand 7441ccf165 Downgrade graphiql to v3.8.3
Something broke in v3.9.0

Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:41 +02:00
Timo Sand fad1f9e2e4 Update @graphiql/react to 0.29.0
To remove version discrepancies

Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:41 +02:00
Timo Sand a51eeacfc4 Update graphiql to latest v3 version
Signed-off-by: Timo Sand <timo.sand@f-secure.com>
2026-03-07 21:12:40 +02:00
Patrik Oldsberg d0206c499a Remove deprecated defaultPath migration helper from PageBlueprint
The `defaultPath` param was a compile-time migration artifact typed to
produce an error, guiding users to use `path` instead. The migration
period is over, so this removes it from the public API surface.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-05 09:53:22 +01:00
Patrik Oldsberg 17dff0ba25 docs: rename package discovery to feature discovery and reduce duplication
Rename "package discovery" to "feature discovery" across all plugin
READMEs and docs to match the established terminology. Slim down the
Feature Discovery section in the architecture docs to avoid duplicating
the configuration details now covered in the installing plugins page.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-04 12:57:49 +01:00
Patrik Oldsberg ae71853b45 docs(api-docs): update README for new frontend system as default
Add new frontend system installation as the default path with package
discovery. Move old frontend system wiring to an "Old Frontend System"
section. Update README-alpha.md to be an extension reference rather
than experimental documentation.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-04 11:38:40 +01:00
github-actions[bot] db0d171511 Version Packages (next) 2026-03-03 14:16:49 +00:00
Patrik Oldsberg 30e08dfbcc Add default entity content groups for techdocs and api-docs plugins
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-25 15:37:10 +01:00
github-actions[bot] 4bd6a3a1af Version Packages (next) 2026-02-24 19:24:06 +00:00
Andre Wanlin 35e8d6cb34 Merge pull request #32813 from intelliking/fix/issue-32804
fix: Parameter field input data is obscured with dark mode on
2026-02-21 11:52:39 -06:00
github-actions[bot] e6df5d52ce Version Packages 2026-02-17 16:06:18 +00:00
Patrik Oldsberg b7ae1243e0 frontend-plugin-api: make header actions a element[]
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 12:35:20 +01:00
Patrik Oldsberg 018ca876d0 add plugin title and icons
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:34 +01:00
Patrik Oldsberg a63eee6a73 api-docs: bring back page header
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:30 +01:00
Patrik Oldsberg 4d2b2642c0 frontend-plugin-api: added noHeader param for page blueprint
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:28 +01:00
Patrik Oldsberg d2705be180 frontend-plugin-api: add support for sub page icons
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:28 +01:00
Patrik Oldsberg da2015bb3b prettier and API reports
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:27 +01:00
Patrik Oldsberg 4449136abd api-docs: hide page header in NFS
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:25 +01:00
Patrik Oldsberg abd0a5ad52 frontend-plugin-api: migration to IconElement + API reports
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:23 +01:00
Patrik Oldsberg e1f22f2d15 plugin icons and titles
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:22 +01:00
Fredrik Adelöw c8f65a1e53 Merge pull request #32247 from Erob711/api-card-table-options
feat: add table options and title for components cards of api
2026-02-16 17:02:39 +01:00
intelliking 69d6e3c7f9 fix: Parameter field input data is obscured with dark mode on
Signed-off-by: intelliking <tyleradams93226@gmail.com>
2026-02-12 15:10:30 +00:00
github-actions[bot] 7c41134684 Version Packages (next) 2026-02-10 16:14:59 +00:00
Fredrik Adelöw 1107812a0f Merge pull request #32631 from backstage/freben/predicates-2
Introduce the `@backstage/filter-predicates` package
2026-02-10 16:17:35 +01:00
Andreas Berger 491a06cbf1 Add the ability to show icons for the tabs on the entity page (new frontend)
Signed-off-by: Andreas Berger <andreas@berger-ecommerce.com>
2026-02-05 11:15:56 +01:00
Patrik Oldsberg 41836147fc api-docs: migrate entity filters to entity predicates
Migrated entity filters from deprecated string-based format to the new
entity predicate format in the alpha exports. Also updated documentation
across multiple plugins to use the new format and Blueprint APIs.

Changes:
- Migrated all entity filters in api-docs plugin from strings like
  'kind:api' to entity predicates like { kind: 'api' }
- Updated documentation examples in api-docs, org, kubernetes, and
  catalog-graph plugins
- Migrated all documentation examples from createEntityCardExtension and
  createEntityContentExtension to use EntityCardBlueprint and
  EntityContentBlueprint

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-04 21:25:13 +01:00
Patrik Oldsberg ac9bead0dc Add createTestEntityPage utility for testing entity extensions
This adds a test utility that simplifies testing entity cards and content
extensions in the new frontend system. The utility creates a test page
that provides EntityProvider context and accepts entity extensions through
input redirects.

Also adds the `apis` option to `renderTestApp` for API overrides, and
includes tests for entity cards in catalog, org, and api-docs plugins.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-04 11:29:47 +01:00
Paul Schultz a7e0d506a2 feat: enable react router feature flags for v7
Signed-off-by: Paul Schultz <pschultz@pobox.com>
2026-02-03 09:37:11 -06:00