Commit Graph

72196 Commits

Author SHA1 Message Date
Patrik Oldsberg 6cc77e2b50 Drop unreleased cli-module-auth changeset
The @backstage/cli-module-auth package is not yet released, so there
is no need for a changeset tracking its exports.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 20:53:10 +01:00
Patrik Oldsberg 4f6e7de133 Address second round of PR review feedback
- Replace getConfig<T> with getMetadata/setMetadata on CliAuth, removing
  the unsafe type parameter in favor of returning unknown
- Move updateInstanceConfig from cli-module-auth public API to
  CliAuth.setMetadata, removing the cross-package dependency
- Rename 'config' to 'metadata' in StoredInstance and storage schemas
- Add zod validation at consumer sites (cli-module-actions) for
  type-safe metadata access
- Fix zod imports to use zod/v3 for compatibility with zod v4
- Add proper-lockfile to cli-node for metadata write locking
- Refactor cli-node storage from fs-extra to node:fs
- Remove @backstage/cli-module-auth dependency from cli-module-actions

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 20:53:10 +01:00
Patrik Oldsberg 2b90358730 Address PR review feedback
- Convert CliAuth getters to methods (getInstanceName, getBaseUrl) so
  options can be added in the future
- Remove StoredInstance from cli-node public API, hiding instance details
- Move secretStore to cli-internal for re-use, refactoring from fs-extra
  to node:fs
- Add shared getAuthInstanceService helper in cli-internal for
  constructing secret-store service keys
- Define StoredInstance locally in cli-module-auth instead of importing
  from cli-node
- Update all consumers and tests for the new method-based API

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 20:53:10 +01:00
Patrik Oldsberg da8e6603a4 Clean up unreleased API surface
Since cli-module-auth and cli-module-actions are not yet released,
remove deprecated exports instead of keeping them. Also make httpJson
and getSecretStore internal to cli-node, duplicating the small httpJson
wrapper locally in each consuming package.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 20:53:10 +01:00
Patrik Oldsberg 3c6de38345 Update API report for cli-module-auth
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 20:07:51 +01:00
Patrik Oldsberg 12fa965e67 cli-node: add CliAuth class for shared CLI authentication
Introduces a class-based authentication management API in @backstage/cli-node
that reads the on-disk instance store, transparently refreshes expired tokens,
and provides a convenient surface for other CLI modules to consume.

The split keeps filesystem-based instance selection and writes owned by
cli-module-auth, while reading and consuming the current instance is
available through CliAuth in cli-node.

Migrates cli-module-actions to use the new API and deprecates the ad-hoc
function exports from cli-module-auth.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 20:07:50 +01:00
Patrik Oldsberg df15d409a4 Merge pull request #33397 from davidfestal/update-frontend-feature-loader-ready-with-bundle-command
chore(dyamic-frontend-feature-loader): update README with the new `bundle` command
2026-03-17 19:38:08 +01:00
Andre Wanlin 00617627b1 Merge pull request #33069 from awanlin/docs/scaffolder-clean-up
[Doc] Scaffolder clean up
2026-03-17 13:37:57 -05:00
Patrik Oldsberg 401c1af6d4 Merge pull request #33395 from backstage/rugvip/promote-translation-refs-stable
Promote translation refs from alpha to stable entry points
2026-03-17 18:51:26 +01:00
Andre Wanlin f4c012dee3 Merge pull request #33064 from awanlin/docs/nfs-getting-started-auth
[Docs] NFS - Authentication
2026-03-17 12:35:02 -05:00
Jon Koops 956133bf45 docs: recommend Node.js built-in proxy support for corporate proxies (#33006)
Node.js 22.21.0+ natively supports HTTP_PROXY, HTTPS_PROXY, and
NO_PROXY environment variables via NODE_USE_ENV_PROXY, eliminating the
need for undici and global-agent workarounds. This also works with
node-fetch and cross-fetch since they delegate to node:http/node:https
without overriding the HTTP agent.

Add a new corporate proxy tutorial under docs/ with the recommended
approach and update the legacy guide in contrib/ to point to it.
Update proxy references in the deployment, keeping-backstage-updated,
and TechDocs CLI docs to mention NODE_USE_ENV_PROXY.

Signed-off-by: Jon Koops <jonkoops@gmail.com>
2026-03-17 13:13:00 -04: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 a8bcba6706 Update extractTranslations test for promoted translation refs
The test expected the org plugin's main entry point to have no
TranslationRef exports, but the promotion changes now export
orgTranslationRef from the stable entry point. Update the test to
verify that only the TranslationRef is extracted while non-TranslationRef
exports are still ignored.

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
Fredrik Adelöw f60c2673ce Merge pull request #33399 from backstage/zod-4
chore(deps): Update all packages to Zod v3 || v4
2026-03-17 17:47:47 +01:00
Andre Wanlin e189e60cb2 Fixed links
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2026-03-17 11:36:00 -05:00
Andre Wanlin 11e380b83a Invert based on feedback
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2026-03-17 11:15:41 -05:00
Fredrik Adelöw 31aa3ce7b7 dedupe
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-17 17:00:28 +01:00
Fredrik Adelöw 4919273bea chore: align auth-backend zod version range with rest of repo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-17 16:52:00 +01:00
Fredrik Adelöw 68aca28f0e update the import anyway
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-17 16:48:44 +01:00
Fredrik Adelöw 833f6b5ea4 chore: fix changeset packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-17 16:48:44 +01:00
Fredrik Adelöw 4190ec7f0d chore: refresh frontend-plugin-api alpha API report
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-17 16:48:44 +01:00
Fredrik Adelöw 44a8c0937a chore: regenerate yarn.lock after rebase
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-17 16:48:43 +01:00
Gabriel Dugny e6c41459f5 chore: Switch some zod imports to type only
Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
2026-03-17 16:48:43 +01:00
Gabriel Dugny ffaded0b30 chore: lint & changeset
Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
2026-03-17 16:48:43 +01:00
Gabriel Dugny a49a40d314 Proper /v3 usage everywhere
Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
2026-03-17 16:48:42 +01:00
Gabriel Dugny 0257363c51 Allow zod v3 or v4 dependency (keep using v3)
Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
2026-03-17 16:48:42 +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
Patrik Oldsberg 5d8b4cddb9 Merge pull request #33390 from backstage/rugvip/sunset-docs-plugins
docs: sunset the docs/plugins section as legacy documentation
2026-03-17 16:44:33 +01:00
Andre Wanlin b7f37a60ad Fixed CI and addressed comments
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2026-03-17 10:30:59 -05:00
Andre Wanlin 9a82ed5269 [Docs] NFS - Authentication
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2026-03-17 10:30:58 -05:00
Fredrik Adelöw c607020290 Merge pull request #33398 from backstage/freben/fix-cli-module-build-coverage
fix(cli): exclude __fixtures__ from coverage in cli-module-build
2026-03-17 16:16:58 +01:00
Fredrik Adelöw 85346e51b2 chore(cli): remove unused coveragePathIgnorePatterns from @backstage/cli
The __fixtures__ directory that required this exclusion was moved to
@backstage/cli-module-build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-17 15:40:41 +01:00
Patrik Oldsberg b02ed6ee79 docs: replace core-plugin-api and core-app-api references with frontend-plugin-api
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 15:39:42 +01:00
Fredrik Adelöw 64b7132d40 fix(cli): exclude __fixtures__ from coverage in cli-module-build
When the transform tests were moved from @backstage/cli to
@backstage/cli-module-build, the coveragePathIgnorePatterns config
was not carried over. This caused test failures in CI when running
with --coverage, as Jest tried to instrument the fixture files
containing fake node_modules packages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-17 15:37:24 +01:00
Patrik Oldsberg 97411ebb0c Merge pull request #32542 from backstage/bui-toast
feat: Introduce ToastApi for rich notifications in the new frontend system
2026-03-17 15:34:16 +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
David Festal e8ba654360 chore(dyamic-frontend-feature-loader): update README with the new bundle command
Signed-off-by: David Festal <dfestal@redhat.com>
2026-03-17 15:32:34 +01:00
Patrik Oldsberg 8e559b427d Merge pull request #33393 from backstage/rugvip/move-cli-new-templates
cli-module-new: move yarn new templates from @backstage/cli
2026-03-17 15:32:09 +01:00
Patrik Oldsberg c5cbc84e7f Fix prettier formatting in microsite sidebars
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 15:25:33 +01:00
Patrik Oldsberg d9655bcb16 Remove empty publish-private doc page
The page only contained a TODO placeholder and was never filled in.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 14:55:18 +01:00
Patrik Oldsberg c374ed33e5 frontend-plugin-api: refresh API report after rebase
Regenerate the frontend plugin API report after rebasing so the deprecated AlertApi ref annotations match the current extracted public API.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 14:54:58 +01:00
Patrik Oldsberg 305f4edf00 Fix toast surface tokens for current BUI theme
Update the toast surface and interaction styles to use the current overlay token set so notifications render with the intended background and focus treatment after the BUI token changes.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 14:45:23 +01:00
Patrik Oldsberg c7201754af Merge master and update toastApiRef to new ApiRef pattern
Resolve merge conflicts from master introducing the new ApiRef_2 type
pattern with `.with()` builder. Update toastApiRef to use the same
`createApiRef<T>().with({ id, pluginId })` pattern as all other API
refs, and regenerate API reports.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 14:45:22 +01:00
Patrik Oldsberg b3466f6f78 Merge pull request #33356 from backstage/conditional-extensions
frontend-app-api: add phased app preparation
2026-03-17 14:44:00 +01:00
Patrik Oldsberg 35cd7a20b2 Fix typos in templates documentation
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 14:43:31 +01:00
Patrik Oldsberg 094cee6a40 repo: refresh remaining API reports
Check in the remaining generated API report updates after the rebase so verify sees the current exported surfaces and generated ordering.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 14:03:17 +01:00
Patrik Oldsberg 3860435f6c core-components: refresh alpha API report
Update the generated core-components alpha API report after the rebase so verify sees the current translation key ordering.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:49:09 +01:00
Johan Persson a91000018a fix(ui): improve screen reader output for Checkbox and Table selection
Added aria-hidden to the Checkbox indicator div to prevent screen
readers from announcing decorative icons. Added aria-label to the
Table header selection column wrapper.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-17 13:40:58 +01:00
Johan Persson 1f9682bf28 fix(ui): make Table row a bg consumer for correct hover/selection states
Table rows now participate in the bg provider/consumer system, using
the appropriate neutral token level based on their container background.
On a neutral-1 surface (e.g. inside a Card), rows step up to neutral-2
tokens for hover, selected, pressed, and disabled states.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-17 13:40:58 +01:00