21074 Commits

Author SHA1 Message Date
Charles de Dreuille 6bfcd9967b Merge pull request #33504 from backstage/bui-pluginheader 2026-03-23 15:48:45 +00:00
Charles de Dreuille f9fc8c2dd6 Merge branch 'master' into bui-pluginheader 2026-03-23 15:25:12 +00:00
Charles de Dreuille 31afc347f2 Merge branch 'master' into bui-menu-fix 2026-03-23 11:33:05 +00:00
Antony cc4a682025 fix(bui): add ButtonIcon loading spin animation (#33425)
* fix:  add spin animation

Signed-off-by: Antony Bouyon <antony.bouyon@believe.com>

* chore: changeset

Signed-off-by: Antony Bouyon <antony.bouyon@believe.com>

* Update .changeset/swift-lizards-bathe.md

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

---------

Signed-off-by: Antony Bouyon <antony.bouyon@believe.com>
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Co-authored-by: Johan Persson <johanopersson@gmail.com>
2026-03-23 10:29:21 +01:00
Charles de Dreuille adcdd2f2e0 Improve ring on Menu
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-23 08:49:24 +00:00
Patrik Oldsberg 86711b1769 Update .changeset/orange-friends-march.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-22 22:07:02 +01:00
Fredrik Adelöw 2f1ece9a3f Merge pull request #33511 from backstage/freben/exit
enter prerelease mode
2026-03-22 12:18:58 +01:00
Ben Lambert dc87ac165f add changeset for loopback redirect URI fix (#33509) 2026-03-22 12:14:55 +01:00
Patrik Oldsberg 13d1483605 Apply suggestion from @Rugvip
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-22 10:45:17 +01:00
Fredrik Adelöw fe23e0cd36 enter pre
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-22 10:16:35 +01:00
Charles de Dreuille 4d259c24d6 Updates
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-21 18:09:22 +00:00
Charles de Dreuille 49ffe8ae6b First pass improving the PluginHeader
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-21 10:14:44 +00:00
Michael Walsh 375b546fa1 fix(catalog): Fix catalog refresh_state deadlock when running multiple replicas
getProcessableEntities uses SELECT ... FOR UPDATE SKIP LOCKED to prevent concurrent processors from selecting the same rows, but it was called with a raw Knex instance instead of a transaxction. This meant the row locks were released immediately after the SELECT, before the subsequent UPDATE executed - making SKIP LOCKED ineffective and allowing multiple replicas to update overlapping rows, causing PostgreSQL deadlock (error 40P01). Wrapping the call in a transaction ensures the locks are held through the UPDATE, so concurrent replicas correctly skip already-claimed rows.

Signed-off-by: Michael Walsh <walshmichael310@gmail.com>
2026-03-20 17:19:09 +01:00
Patrik Oldsberg 9d851ea7c6 Merge pull request #33455 from backstage/rugvip/scaffolder-nfs-page-layout
scaffolder: migrate NFS plugin to use SubPageBlueprint page layout
2026-03-20 16:34:12 +01:00
Patrik Oldsberg f3b26a8074 scaffolder: fix bad vibes
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-20 15:57:07 +01:00
Patrik Oldsberg fc02749b86 Address Copilot review feedback
Localize the "More options" aria-label in OngoingTaskContextMenu via
the translation ref, and add a migration note to the changeset about
direct FormFieldBlueprint attachments no longer being consumed.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-20 15:39:03 +01:00
Patrik Oldsberg d257834ed1 scaffolder: add header with context menu to NFS task page
Adds a Header from @backstage/ui with a kebab menu to the individual task
sub-page in the new frontend system, restoring the ability to show/hide
logs and button bar, as well as start over, retry, and cancel actions.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-20 15:39:03 +01:00
Patrik Oldsberg a49d871524 Merge pull request #33451 from backstage/rugvip/create-app-fixes
create-app: improve next template sidebar, nav wiring, and examples
2026-03-20 14:56:44 +01:00
Patrik Oldsberg cfefdc5f0e Update changeset to patch and add patches entry
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-20 12:52:01 +01:00
Patrik Oldsberg 4cc9af2433 scaffolder: migrate NFS plugin to use SubPageBlueprint page layout
Refactored the scaffolder plugin's new frontend system (NFS) definition
to use the SubPageBlueprint pattern with tabbed page layout, mirroring
the approach used by the Settings plugin.

The scaffolder page is now a parent PageBlueprint without a loader,
receiving sub-pages as inputs that render as tabs:
- Templates (with nested template wizard route)
- Tasks (with nested ongoing task detail route)
- Actions
- Template Editor (with nested editor/form/fields routes)
- Templating Extensions

Page components used in the NFS path no longer render their own
Page/Header chrome, relying on the framework's PageLayout instead.
Legacy frontend system compatibility is preserved.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-20 12:52:01 +01:00
Patrik Oldsberg e8ffac1952 chore: add changeset for create-app next template fixes
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-20 12:29:59 +01:00
Fredrik Adelöw 41b05a9f19 Merge pull request #33462 from backstage/freben/remove-type-fest-catalog-github
Remove type-fest dependency from catalog-backend-module-github
2026-03-20 12:27:58 +01:00
Patrik Oldsberg cb63f122df Merge pull request #33450 from backstage/rugvip/catalog-entity-page-no-header
catalog: disable page layout header for entity page
2026-03-20 12:00:12 +01:00
Patrik Oldsberg d39c2dcce3 Merge pull request #33441 from backstage/rugvip/remove-plugin-header-action-define-params
frontend-plugin-api: remove defineParams from PluginHeaderActionBlueprint
2026-03-20 11:48:11 +01:00
Fredrik Adelöw 78457904ee Merge pull request #33347 from backstage/dependabot/npm_and_yarn/undici-7.24.0
chore(deps): bump undici from 7.22.0 to 7.24.0
2026-03-20 11:15:10 +01:00
Fredrik Adelöw edf465f2a6 Remove type-fest dependency from catalog-backend-module-github
Replace the imported PartialDeep type from type-fest with a local
equivalent helper type used only in tests, eliminating the external
dev dependency.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-03-20 11:03:22 +01:00
Fredrik Adelöw 884b8691b0 Merge pull request #33305 from backstage/renovate/wait-for-expect-4.x
chore(deps): update dependency wait-for-expect to v4
2026-03-20 10:26:36 +01:00
dependabot[bot] e928e7387c chore(deps): bump undici from 7.22.0 to 7.24.0
Bumps [undici](https://github.com/nodejs/undici) from 7.22.0 to 7.24.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.22.0...v7.24.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 09:24:58 +00:00
dependabot[bot] bdbbf00eab build(deps): bump flatted from 3.4.1 to 3.4.2
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.4.1 to 3.4.2.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.4.1...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-20 08:14:44 +00:00
Patrik Oldsberg 7e163ab470 Merge pull request #33437 from backstage/techdocs-bui-header-migration
feat(techdocs): migrate alpha plugin pages to BUI header system
2026-03-20 09:06:57 +01:00
Johan Persson d66a3ec9ab feat(frontend-plugin-api): add titleRouteRef to PageBlueprint
Add `titleRouteRef` to `PageLayoutProps` so the plugin header title
links back to the plugin root. `PageBlueprint` resolves it from
`plugin.routes.root` with fallback to `params.routeRef`.

- PageLayout swap resolves the title link via a conditional child
  component that calls `useRouteRef` only when a route ref exists
- Header actions get stable React keys via `cloneElement`

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-20 09:05:23 +01:00
Patrik Oldsberg d7b6077909 catalog: disable page layout header for entity page
The entity page in the new frontend system already renders its own
header through the EntityHeader extension, so the default page layout
header from the PageBlueprint was redundant. This disables it by
passing noHeader: true to the page factory.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-20 08:59:25 +01:00
Juan Pablo Garcia Ripa 3d27f2312b Update .changeset/angry-clouds-tell.md
Co-authored-by: Patrik Oldsberg <poldsberg@gmail.com>
Signed-off-by: Juan Pablo Garcia Ripa <sarabadu@gmail.com>
2026-03-20 08:41:14 +01:00
Juan Pablo Garcia Ripa 64a91d0005 Rename frontend-plugin to legacy-frontend-plugin
rename the template to not get naming conficts with the nfs template

Signed-off-by: Juan Pablo Garcia Ripa <sarabadu@gmail.com>
2026-03-19 21:57:48 +01:00
Patrik Oldsberg 364d4fe187 frontend-app-api: add apis to specialized app result types (#33445)
* frontend-app-api: add `apis` to specialized app result types

Added `apis: ApiHolder` to both `BootstrapSpecializedApp` and
`FinalizedSpecializedApp` types, and included the APIs in the returned
objects from `getBootstrapApp()`, `finalizeFromSessionState()`, and
`finalizeFromBootstrapError()`.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Add .patches entry for PR #33445

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

---------

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-19 20:57:20 +01:00
Patrik Oldsberg f5d727ab60 Fix prettier formatting in changeset
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-19 19:23:17 +01:00
Patrik Oldsberg a39ab35042 Apply suggestions from code review
Co-authored-by: Patrik Oldsberg <poldsberg@gmail.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-19 19:09:06 +01:00
Patrik Oldsberg ce6d262e81 Merge pull request #33443 from backstage/rugvip/unprocessed-entities-devtools
catalog-unprocessed-entities: integrate as DevTools tab by default
2026-03-19 19:09:01 +01:00
Patrik Oldsberg b6f1fae0d9 catalog-unprocessed-entities: integrate as DevTools tab by default
The unprocessed entities view is now provided as a DevTools sub-page
directly from the plugin, removing the need for manual wiring. The
standalone page is still available but disabled by default.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-19 18:55:32 +01:00
Jon Koops 980b7f5632 docs: remove legacy corporate proxy documentation
All Node.js versions in Backstage's support matrix (v22 and v24 LTS)
include built-in proxy support via NODE_USE_ENV_PROXY, making the
legacy global-agent/undici workarounds unnecessary. Remove the legacy
proxy guide from contrib/ and all references to the legacy approach
across the docs.

Signed-off-by: Jon Koops <jonkoops@gmail.com>
2026-03-19 17:17:17 +01:00
Patrik Oldsberg 5a9297ac8d Downgrade changeset to patch (not a breaking change)
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-19 15:05:59 +01:00
Johan Persson bcbb6eb6b8 fix(ui): make SearchAutocomplete background-aware
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-19 14:50:42 +01:00
Johan Persson 8c2e24e612 fix(ui): add aria-hidden to PluginHeader icon
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-19 14:50:42 +01:00
Johan Persson dc3cc87599 feat(techdocs): migrate alpha plugin pages to BUI header system
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-19 14:50:42 +01:00
Patrik Oldsberg e220589506 frontend-plugin-api: remove defineParams from PluginHeaderActionBlueprint
Replace the defineParams + createExtensionBlueprintParams pattern with
inline param types on the factory, matching PageBlueprint, SubPageBlueprint,
and other blueprints. Update the app-visualizer usage accordingly.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-19 13:43:08 +01:00
Fredrik Adelöw 744f9044a2 Keep showing stale table data during filter loading
The Table component replaces all data rows with a loading spinner when
isLoading is true. This caused a flash of empty table between filter
changes. Now only show the loading state when there's no data to
display yet (initial load), keeping stale results visible during
filter transitions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-19 10:06:14 +01:00
Fredrik Adelöw 51aacae34b Fix catalog filter flicker caused by stale render cycle
The EntityListProvider exposed entities from `outputState` (synced via
useEffect) but `loading` from `useAsyncFn`. When the async function
resolved, `loading` flipped to false one render before `outputState`
updated, causing a flash of stale data between the loading indicator
and the new results.

Use `resolvedValue` directly in the context value when available,
eliminating the extra render lag.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-19 09:49:05 +01:00
Fredrik Adelöw d7c67cddf5 switch omitIdentityTokenOwnershipClaim to true
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-18 22:10:50 +01:00
Patrik Oldsberg 7d86248253 Merge pull request #33424 from backstage/rugvip/ui-react-aria-deps
ui: add React Aria and React Stately dependencies
2026-03-18 21:18:54 +01:00
Patrik Oldsberg 73549d4193 Update changeset to reflect react-stately as a regular dependency
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-18 17:41:31 +01:00