Commit Graph

177 Commits

Author SHA1 Message Date
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 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 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 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 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 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 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 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 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
github-actions[bot] ed7c4e3bef Version Packages (next) 2026-03-10 17:34:12 +00:00
Patrik Oldsberg a462d9ae8b Merge pull request #33148 from backstage/rugvip/move-extensionFactoryMiddleware-to-frontend-app-api
Move `ExtensionFactoryMiddleware` from frontend-plugin-api to frontend-app-api
2026-03-05 13:56:01 +01:00
Patrik Oldsberg be07392d48 Merge pull request #33143 from backstage/rugvip/remove-allowUnknownExtensionConfig
Remove `allowUnknownExtensionConfig` option from frontend app APIs
2026-03-05 13:51:46 +01:00
Patrik Oldsberg dab6c46168 Move ExtensionFactoryMiddleware from frontend-plugin-api to frontend-app-api
The `ExtensionFactoryMiddleware` type is only used by the app-level wiring
and has been moved to `@backstage/frontend-app-api` as its canonical location.

The type is preserved in `@backstage/frontend-plugin-api` with a `@deprecated`
tag pointing to the new location. All internal usages have been updated to
import from the new location.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-05 10:37:51 +01:00
Patrik Oldsberg 33de79d5dd Remove deprecated createPublicSignInApp from @backstage/frontend-defaults
The function was deprecated in favor of using `createApp` with the
`appModulePublicSignIn` module from `@backstage/plugin-app/alpha`.
This removes the function, its tests, and updates the documentation
to use the recommended approach.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-05 10:33:45 +01:00
Patrik Oldsberg 92af1ae9c0 Remove allowUnknownExtensionConfig option from frontend app APIs
The `allowUnknownExtensionConfig` option was unused in practice — unknown
extension config was always reported via the error collector regardless of
the flag. For `createSpecializedApp`, unknown extension config is now always
included in the returned errors. For `createApp`, it is handled as a
console warning via `maybeCreateErrorPage`.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-05 10:32:08 +01:00
github-actions[bot] 4bd6a3a1af Version Packages (next) 2026-02-24 19:24:06 +00:00
github-actions[bot] e6df5d52ce Version Packages 2026-02-17 16:06:18 +00:00
Patrik Oldsberg b2dc178fb6 frontend-defaults: update test snapshot
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 13:00:07 +01:00
Patrik Oldsberg 92d77a98ff rename header action to plugin header action
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:37 +01:00
Patrik Oldsberg b91e17f622 snapshot fixes for tests
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:55:36 +01:00
github-actions[bot] 7c41134684 Version Packages (next) 2026-02-10 16:14:59 +00: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
github-actions[bot] 1ea737c1e2 Version Packages (next) 2026-02-03 14:24:29 +00:00
Patrik Oldsberg bdf05eac2f Revert "frontend-app-api: switch new API conflict error to be a warning"
This reverts commit 17e0eb3e5f.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-01-29 11:41:01 +01:00
github-actions[bot] d4b85dddee Version Packages (next) 2026-01-27 15:51:11 +00:00
Patrik Oldsberg ba764ddc36 Merge pull request #32529 from backstage/rugvip/disco
frontend-app-api: remove support for experimental package config
2026-01-27 13:20:40 +01:00
Patrik Oldsberg 3d963ae749 Merge pull request #32527 from backstage/rugvip/pluginId
frontend-plugin-api: plugins now have pluginId
2026-01-27 13:10:59 +01:00
Patrik Oldsberg 7a6683faa2 frontend-app-api: backfill pluginId field
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-01-27 12:37:03 +01:00
Patrik Oldsberg 53b6549c85 frontend-plugin-api: plugins now have pluginId
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-01-26 19:50:39 +01:00
Patrik Oldsberg 122d39c4dd frontend-app-api: remove support for experimental package config
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-01-26 19:45:51 +01:00
Patrik Oldsberg 658ea65574 Merge pull request #32522 from backstage/rugvip/warning
frontend-app-api: switch new API conflict error to be a warning
2026-01-26 17:00:40 +01:00
Patrik Oldsberg 17e0eb3e5f frontend-app-api: switch new API conflict error to be a warning
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-01-26 13:39:01 +01:00
Patrik Oldsberg 409af724bf test and review fixes
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-01-23 12:06:21 +01:00
Patrik Oldsberg c38b74df5f frontend-plugin-api: complete deprecation of app blueprints
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-01-23 11:41:16 +01:00
Patrik Oldsberg 7edb810248 frontend-plugin-api: add new internal option for extension inputs
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-01-23 11:41:15 +01:00
github-actions[bot] 2e902e7b43 Version Packages 2026-01-20 16:40:05 +00:00
Patrik Oldsberg f9d5756354 app: add missing plugin wrapper API
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-01-19 14:14:23 +01:00
github-actions[bot] e237d65cdc Version Packages (next) 2026-01-05 22:23:51 +00:00
Backstage Service Account 9f1ee3e667 Version Packages (next) (#32222)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-30 16:06:20 +01:00
github-actions[bot] c24788d5bb Version Packages 2025-12-16 14:08:20 +00:00