21074 Commits

Author SHA1 Message Date
Patrik Oldsberg 8e092338c6 changesets: add package metadata follow-up notes
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:05:09 +01:00
Patrik Oldsberg 5b160f97db changesets: split phased app follow-up notes
Split the combined phased app changeset into package-specific entries so each published package describes only its own adopter-facing change.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:38 +01:00
Patrik Oldsberg d65d4812f6 frontend-plugin-api: support predicate overrides
Allow plugin and extension overrides to replace or remove existing if predicates. This makes conditional plugin and extension behavior overrideable through both plugin overrides and module-installed extension overrides.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:21 +01:00
Patrik Oldsberg 47f7cd2505 permission-react: keep batching internal
Revert the public multi-request authorize overload and rely on internal batching instead. Frontend app predicate checks now make separate authorize calls that still coalesce within the same tick.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:21 +01:00
Patrik Oldsberg 5fec07d083 docs: cover phased frontend app setup
This documents the new phased app preparation flow and conditional feature behavior in the frontend-system docs, and adds the missing changeset coverage for related published package changes.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:11 +01:00
Patrik Oldsberg f30eeba995 frontend-plugin-api: support feature-level predicates
This lets plugin and module instances apply a shared condition to all of their extensions, while preserving extension-level conditions by combining them with logical AND during app spec resolution.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:11 +01:00
Patrik Oldsberg 457904d372 frontend-app-api: defer conditional bootstrap APIs and root elements
This keeps bootstrap rendering stable while still allowing root elements and API subtrees to activate once session predicates are available, and warns when bootstrap-visible extensions depend on APIs that only appear during finalization.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:02:42 +01:00
Patrik Oldsberg 01d3c2ec0f frontend-app-api: hand off finalized apps through callback
Replace the prepared app promise/snapshot finalization API with an onFinalized callback so bootstrap consumers can switch to the finalized app through a simple one-way handoff.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:02:07 +01:00
Patrik Oldsberg 89f83827c9 frontend-app-api: expose bootstrap app state
Expose the prepared bootstrap tree together with subscription-based phase updates so createApp can render from app state directly instead of forcing rerenders through a sign-in callback.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:01:58 +01:00
Patrik Oldsberg f4c03772a4 frontend-app-api: internalize prepared session state
Move prepared app session ownership into frontend-app-api so bootstrap only signals readiness while callers use tryFinalize or finalize to read the finalized app state. This reduces createApp boilerplate and keeps the specialized app lifecycle centered in the lower-level API.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:01:34 +01:00
Patrik Oldsberg 94e91d9de3 frontend-app-api: make session state opaque
Replace exposed prepared app APIs and predicate plumbing with a reusable opaque session state so apps can skip sign-in without leaking internals. Align the specialized app flow around getSignIn().ready and finalize(sessionState) for explicit session bootstrap and reuse.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:01:15 +01:00
aramissennyeydd 0ed572576e delete changesets
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-03-17 13:00:39 +01:00
aramissennyeydd 25b7ddd664 feat: allow dynamically enabling and disabling extensions
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-03-17 13:00:29 +01:00
Patrik Oldsberg 904841dd84 frontend-app-api: halfway implementation of app preparation split
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-17 12:59:59 +01:00
Patrik Oldsberg 925e0895b3 frontend-app-api: add prepareSpecializedApp two-phase app wiring
This adds a new prepare/finalize app wiring flow that renders sign-in first and finalizes the full app after identity capture, while keeping createSpecializedApp as a deprecated wrapper. It also updates frontend-defaults/createApp to use the same flow and includes test and API report updates.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 12:59:58 +01:00
Patrik Oldsberg e9eb585978 Merge pull request #33392 from backstage/rugvip/fix-api-review-items-1-3-5
frontend-plugin-api, frontend-app-api: API review cleanup
2026-03-17 12:46:03 +01:00
Patrik Oldsberg 2185cb2577 Merge pull request #33381 from backstage/blam/actions-cli
feat(cli): add actions CLI module for distributed actions registry
2026-03-17 12:41:15 +01:00
Patrik Oldsberg 38bca59990 Merge pull request #33365 from backstage/rugvip/opaque-api-ref-type
frontend-plugin-api: convert ApiRef to an opaque type
2026-03-17 12:15:05 +01:00
Patrik Oldsberg 3048708aed Merge pull request #33391 from backstage/rugvip/add-cli-module-template
cli-module-new: add template for CLI module packages
2026-03-17 12:10:21 +01:00
Patrik Oldsberg ed3483e560 Merge remote-tracking branch 'origin/master' into bui-toast
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

# Conflicts:
#	packages/frontend-defaults/src/createPublicSignInApp.test.tsx
#	yarn.lock
2026-03-17 12:05:59 +01:00
Patrik Oldsberg 59752a25d9 Fix CI: add missing toast-forwarder to snapshot and add changesets
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 12:02:00 +01:00
Charles de Dreuille 693f1c59d7 Merge pull request #33358 from backstage/charlesdedreuille/bacui-42-code-listboxlistrow-component
feat(ui): add List and ListRow components
2026-03-17 11:01:09 +00:00
Patrik Oldsberg 5fd78ba82f frontend-plugin-api, frontend-app-api: API review cleanup
Remove @backstage/core-plugin-api leakage from the
@backstage/frontend-app-api public API surface. Rename PluginOptions
to CreateFrontendPluginOptions with a deprecated alias. Remove
ResolvedExtensionInputs from the main @backstage/frontend-plugin-api
entry point.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 11:37:13 +01:00
Patrik Oldsberg b73a0d3832 Merge pull request #33303 from backstage/blam/actions-permissions
`feat(actions)`: Add support for defining permissions at the action level
2026-03-17 11:33:13 +01:00
Patrik Oldsberg aba94d2b27 Merge pull request #33385 from drodil/auth_mem_leaks
fix(auth): memory leaks
2026-03-17 11:03:20 +01:00
Patrik Oldsberg edf2b77581 cli-module-new: add template for CLI module packages
Add a new `cli-module` template to the Backstage CLI that scaffolds
CLI module packages. This includes adding the `cli-module` role to the
template system, with proper naming conventions and prompts.

The generated package includes:
- A bin entry point for standalone execution
- An index.ts with createCliModule setup
- An example command using cleye
- Standard package.json with cli-module role

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 10:54:26 +01:00
Patrik Oldsberg abc12cd8e1 fix: address review feedback for actions CLI module
Fix argument parsing bugs in the execute command where actionId at index 0
was incorrectly skipped when --instance was absent, and flag values matching
the actionId string were erroneously removed. Add --help support to the
execute command for CLI report generation. Add missing bin script and
cli-report.md for cli-module-actions. Add resolveAuth tests. Bump
backend-defaults changeset to minor for the security-relevant auth change.
Replace cross-fetch with native fetch in cli-module-auth to avoid punycode
deprecation warnings during CLI report generation.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 10:54:11 +01:00
Hellgren Heikki 634ededdc9 fix(auth): memory leaks
alb-provider: JWT verification block was wrapped in generic error
that turned 401 to 500 causing clients to retry the login

cimd: cimd clients are not registered in oidc_clients table
so inserting offline sessions for them violates the foreign key
constraint. dropping the fk.

offline: return access token even when refresh token issuing fails.
if the refresh token issue fails for some reason, it will return
500 which will then cause client to retry even it can get valid
access token without refresh token.

closes #33329
Signed-off-by: Hellgren Heikki <heikki.hellgren@op.fi>
2026-03-17 10:52:40 +02:00
Patrik Oldsberg 980faba560 Merge branch 'master' into blam/actions-permissions
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-17 09:50:34 +01:00
Deepesh123455 320eed3a6c fix(core-components): address layout feedback and add changeset
Signed-off-by: Deepesh123455 <deepeshthakur802@gmail.com>
2026-03-17 14:08:58 +05:30
Patrik Oldsberg ccc6b25f87 api-ref: keep plugin ownership metadata internal
Hide plugin ownership metadata from the public ApiRef type while preserving internal ownership resolution for the builder-based API ref flow.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 09:35:02 +01:00
Patrik Oldsberg 76b89c7437 api-ref: infer builder ids and plugin ownership
Preserve literal API ref ids in the builder form while keeping the deprecated constructor compatible, and rely on explicit ownership metadata instead of the old core id fallback.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 09:35:02 +01:00
Patrik Oldsberg 476df5ffd5 Fix changeset frontmatter formatting
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 09:35:02 +01:00
Patrik Oldsberg d911b72811 frontend-plugin-api: add explicit ApiRef plugin ownership
Add the new frontend ApiRef builder form while preserving compatibility with existing refs, and let frontend apps resolve API ownership through an explicit pluginId when provided.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 09:35:02 +01:00
Patrik Oldsberg cc459f73a8 frontend-plugin-api: convert ApiRef to an opaque type
Convert the ApiRef type in the new frontend system to an opaque type
with a $$type discriminator, matching the pattern used by route refs
and extension data refs. Add a builder-pattern creation overload
(createApiRef<T>().with({ id })) alongside the existing direct-config
form. Create OpaqueApiRef in frontend-internal for internal type
validation.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 09:35:02 +01:00
James Brooks 05594087b9 Add virtualized prop to Table component (#33246)
Adding a new virtualized prop to the Table component to better support rendering large numbers of rows
2026-03-17 08:31:43 +00:00
John Collier 1b42218ca3 feat(scaffolder): implement a get scaffolder task log action (#33185)
* feat(scaffolder): create get scaffolder task log action

Adds a new action to allow retrieving logs from scaffolder tasks, by way of the scaffolderService.getLogs function

Signed-off-by: John Collier <jcollier@redhat.com>

* Fix typo after rename

Signed-off-by: John Collier <jcollier@redhat.com>

* Add to list of known actions

Signed-off-by: John Collier <jcollier@redhat.com>

---------

Signed-off-by: John Collier <jcollier@redhat.com>
2026-03-17 08:48:59 +01:00
Ben Lambert dee4283ccf feat: add pluginId to actions, server name/description config, dot separator for namespaced tools (#33344)
Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-17 08:47:51 +01:00
Charles de Dreuille 5096efc276 Merge pull request #33378 from backstage/fix/table-complete-mode-loading
Fix Table loading skeleton not showing for complete mode with getData
2026-03-17 07:18:44 +00:00
Charles de Dreuille 57726bf1c2 Merge pull request #33363 from shivamtiwari3/fix/table-replace-removed-bui-bg-tint-tokens
Fix: replace removed --bui-bg-tint tokens in Table component (fixes #33292)
2026-03-17 07:16:14 +00: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
benjdlambert 42960f1db7 feat: add actions CLI module for distributed actions registry
Adds @backstage/cli-module-actions with commands for listing and executing
actions from the distributed actions registry. Exports auth helpers from
cli-module-auth for cross-module reuse. Relaxes the actions registry auth
check to allow direct user invocations from the CLI.

Signed-off-by: benjdlambert <ben@blam.sh>
2026-03-16 22:04:16 +01:00
Patrik Oldsberg 4581c003f9 Apply suggestions from code review
Co-authored-by: Patrik Oldsberg <poldsberg@gmail.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-16 21:57:43 +01:00
Patrik Oldsberg c0ab3763e5 Fix tsc errors and add missing changeset
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-16 21:39:40 +01:00
Patrik Oldsberg 3f36ce1257 Clarify icon sizing rules for NFS icons
Document the IconElement sizing contract, ensure deprecated icon component registrations inherit size correctly, and add changesets for the affected icon migration packages.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-16 21:39:40 +01:00
Patrik Oldsberg 22f101e208 Merge pull request #33368 from backstage/rugvip/add-frontend-dev-utils
frontend-dev-utils: add helper for plugin dev apps
2026-03-16 21:32:15 +01:00
Patrik Oldsberg 0ebde15eef Add changeset for table cell documentation
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-16 20:39:11 +01:00
Patrik Oldsberg 1f25382e56 Move table cell requirement docs to docs-ui
Move the cell wrapper requirement documentation from the package
README to the docs-ui table component page where it belongs.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-16 20:27:02 +01:00
Patrik Oldsberg 872dc1025e ui: document table cell wrapper requirement
Added TSDoc comments to ColumnConfig.cell, RowRenderFn, CellProps,
CellTextProps, and CellProfileProps making it explicit that cell render
functions must return a cell component (Cell, CellText, or CellProfile)
as the top-level element. Also added a Table Cell Requirement section
to the package README with correct and incorrect usage examples.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-16 20:16:25 +01:00