Commit Graph

72068 Commits

Author SHA1 Message Date
Patrik Oldsberg f80cf50cda core-components: name the shared progress indicator
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:05:09 +01:00
Patrik Oldsberg 4195e7ccb0 repo: match colorized rspack startup output in accessibility CI
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:05:09 +01:00
Patrik Oldsberg 80202546d5 plugin-app-react: update analytics blueprint snapshot
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:05:09 +01:00
Patrik Oldsberg ea7d951677 repo: accept rspack startup output in accessibility CI
Use a generic Lighthouse server ready pattern so the accessibility job recognizes the example app startup log after the rspack switch.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:05:09 +01:00
Patrik Oldsberg ec794b9e8b frontend-app-api: fix changed-package lint regressions
Declare the new frontend test dependencies, avoid the finalize options shadowing lint error, and add explicit assertions in frontend-test-utils so the changed-package lint jobs pass again.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:05:00 +01:00
Patrik Oldsberg 837de816d5 frontend-app-api: export prepare app options type
Expose PrepareSpecializedAppOptions from the wiring entrypoint and refresh the API report so the new type is available to callers.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:04:42 +01:00
Patrik Oldsberg 6234db86e9 style: apply prettier to phased app follow-up files
Align the recent phased app follow-up changes with the repository formatting rules to avoid carrying a stray formatting-only diff.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:04:30 +01:00
Patrik Oldsberg 03d2484cae frontend-app-api: expose root elements on specialized apps
Add an element shorthand to bootstrap and finalized app results so callers can render the root element without reaching through the tree instance.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:04:06 +01:00
Patrik Oldsberg e66bbfc85c frontend-test-utils: prepare apps before finalizing
Move the test app helpers over to prepareSpecializedApp().finalize() so they stop depending on the deprecated createSpecializedApp entrypoint.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:57 +01:00
Patrik Oldsberg 37ff856142 frontend-defaults: cover conditional page usage patterns
Add createApp coverage for the new page-level and page-child predicate patterns so the example app is backed by implementation-adjacent tests.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:38 +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 3c6436cba0 core-compat-api: restore filter predicate dependency
Keep the redeclared filter-predicates dependency required by core-compat-api's inline frontend imports so the changed-package lint check passes.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:38 +01:00
Patrik Oldsberg e4d8a9ce52 repo: refresh blueprint snapshots for predicates
Update inline snapshots that now include the new extension predicate shape so the changed-package test suite matches the intentional blueprint output.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:38 +01:00
Patrik Oldsberg 00982b947d repo: refresh phased app API reports
Update generated API reports to match the phased app and predicate changes, and drop the stray core-compat-api dependency addition that would otherwise require its own changeset.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:38 +01:00
Patrik Oldsberg b6fc7f861f frontend-app-api: fix phased predicate type checks
Use internal extension shapes when reading predicate metadata and type the finalized app test helper explicitly. This fixes the typecheck breakage introduced by the phased predicate and override changes.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:03:29 +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 72dd26a3a6 frontend-app-api: route sign-in errors through app boundary
Rethrow sign-in bootstrap failures from inside the prepared sign-in tree so the app root extension boundary handles them instead of createApp keeping its own error state. This keeps bootstrap error handling aligned with the rest of the extension tree.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:01:48 +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
Patrik Oldsberg b14e301bb6 frontend-app-api: clean up session boundary initialization
Make the bootstrap-visible app slice explicit so APIs and predicate validation follow the same session boundary rules before the full tree is finalized.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:01:06 +01:00
Patrik Oldsberg 2325e4bf48 frontend-app-api: integrate predicate context into app phases
Compute and cache extension predicate context as part of app phase transitions so sign-in and non-sign-in flows finalize against the same gating state.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:00:56 +01:00
Patrik Oldsberg 6e198233c2 frontend-defaults: prettier
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-17 13:00:47 +01:00
aramissennyeydd 4958e320b6 fix other lint warning
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-03-17 13:00:39 +01:00
aramissennyeydd 7c92a250ec fix lint warning
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-03-17 13:00:39 +01:00
aramissennyeydd 0ed572576e delete changesets
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-03-17 13:00:39 +01:00
aramissennyeydd 10f8fa1df8 migrate to dataloader for batch permissions fetching
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-03-17 13:00:39 +01:00
aramissennyeydd ce97558e11 rename to if and add examples of dynamic cards
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-03-17 13:00:39 +01:00
aramissennyeydd 9770aed23b if no signin page setup, don't try to resolve context
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-03-17 13:00:29 +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 00381fa7b2 frontend-app-api: add session boundary app initialization
Instantiate the app shell up to app/root.children during sign-in, then rebuild the full tree after sign-in without cloning the app tree.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:00:19 +01:00
Patrik Oldsberg d8d8b6a7f3 frontend-app-api: update ExtensionFactoryMiddleware imports
Align the specialized app wiring and generated API reports with the current ExtensionFactoryMiddleware type location.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 13:00:09 +01:00
Patrik Oldsberg 805e7cc688 frontend-app-api: remove reintroduced allowUnknownExtensionConfig
Keep createApp and createSpecializedApp aligned with the breaking change that removed this no-op option, and drop the stale test coverage for it.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 12:59:59 +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 fc08a9b4dd plugin-app: keep identity proxy in prepared finalize flow
This fixes the prepare/finalize sign-in flow so finalized apps continue to use AppIdentityProxy, including protected-mode cookie auth behavior. It also avoids setting guest identity in protected mode when no sign-in page is configured, which lets pre-captured identities remain intact.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 12:59:58 +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
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 f6f53a282f chore: retrigger CI for flaky test failure
The `plugins/api-docs/src/alpha.test.tsx` test failure in Test 24.x
was a flaky failure (passes locally and on Node 22.x).

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 11:44:46 +01: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 ac560a24cb Regenerate API reports
Update downstream app plugin API reports after the ApiRef type changes affected generated union output.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-17 11:27:46 +01:00