Commit Graph

73442 Commits

Author SHA1 Message Date
Patrik Oldsberg 014ba202ba Merge pull request #33670 from backstage/rugvip/app-routes-redirect-config
plugin-app: add redirect config to app/routes extension
2026-03-30 16:40:37 +02:00
Fredrik Adelöw 0a51db2547 Merge pull request #33676 from backstage/freben/catalog-search-table-sync
catalog: Reduce search table write churn during stitching
2026-03-30 16:27:23 +02:00
Fredrik Adelöw 9da73bf599 catalog: Reduce search table write churn during stitching
Replace the bulk DELETE + INSERT of all search rows with a minimal sync
that only touches rows that actually changed:

- Postgres: single writable CTE with unnest — DELETE stale rows and
  INSERT new ones in one atomic statement using snapshot isolation
- MySQL: temporary table merge with deadlock retry (errno 1213)
- SQLite: unchanged bulk replace (sufficient for dev/test)

For a typical user entity with ~200 search rows where one annotation
changed, this reduces the operation from ~400 row writes to ~2.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-30 16:01:37 +02:00
Charles de Dreuille 293bd67c64 Merge pull request #33675 from backstage/fix/storybook-apptheme-api
fix(storybook): register appThemeApiRef in Storybook API providers
2026-03-30 13:55:46 +01:00
Patrik Oldsberg baa72405ac Fix root path redirect matching all routes
Special-case `from: '/'` in redirect config to use an exact path match
instead of the `/*` wildcard, which would match the entire app.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 14:46:18 +02:00
Patrik Oldsberg 6cabf73736 Merge pull request #33669 from backstage/rugvip/docs-getting-started-new-frontend
docs: migrate getting-started docs to new frontend system
2026-03-30 14:40:34 +02:00
Charles de Dreuille 3bd5a0c7b8 Improve Toast setup
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-30 13:13:23 +01:00
Fredrik Adelöw aa8c802cf2 Merge pull request #33672 from backstage/freben/kebabs
remove some cli deprecation warnings
2026-03-30 13:42:46 +02:00
Charles de Dreuille 4dab043bd5 Update Toast.stories.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-30 12:05:12 +01:00
Patrik Oldsberg 0f8b40ddc5 docs: address copilot review comments
Add installation example for extraIcons in the customize-theme guide
and fix "productional code" typo in quickstart-app-plugin--old.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 12:57:47 +02:00
Charles de Dreuille cf2de9c8b8 Update Toast.stories.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-30 11:56:42 +01:00
Charles de Dreuille b651807e56 fix(storybook): replace require() with ESM import in Toast stories
The RealAlertApiStory component used require('@backstage/core-plugin-api')
inside the function body. Vite bundles Storybook as ESM, where require is
not available at runtime, causing a ReferenceError. Replace with a
standard top-level import.

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-03-30 11:55:27 +01:00
Charles de Dreuille e21dd5edc4 fix(storybook): register appThemeApiRef in Storybook API providers
Add AppThemeSelector as an implementation for appThemeApiRef in the
shared Storybook API registry. Without this, any story that renders
a ToastContainer fails with NotImplementedError for core.apptheme.

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-03-30 11:49:34 +01:00
Patrik Oldsberg 88296d5d33 docs: pass auth environment in OAuth2.create example
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 12:48:01 +02:00
Patrik Oldsberg c38a71f855 docs: migrate OIDC auth docs to new frontend system
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 12:45:05 +02:00
renovate[bot] c368cf3db7 chore(deps): update dependency @types/use-sync-external-store to v1
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-30 10:43:01 +00:00
Patrik Oldsberg 561f555fb1 docs: address copilot review feedback
Fix links in viewing-catalog.md and filter-catalog.md to point to
the new frontend system catalog-customization.md instead of the old
guide. Fix the Kubernetes entity content extension ID to use the
correct `entity-content:kubernetes/kubernetes` format. Wrap raw
extension definitions in `createFrontendModule` in search and
scaffolder docs. Correct TechDocs addon installation instructions
to explicitly install addon modules rather than claiming
auto-discovery.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 12:42:11 +02:00
Patrik Oldsberg 89e3f98fa1 Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-30 12:39:13 +02:00
MT Lewis c16c5084d0 cli-module-build: pack packages in batches inside createDistWorkspace
When passing --always-yarn-pack, we previously
packed all packages in parallel. Since
package.json files are rewritten during packing,
this could cause intermittent "No local workspace
found for this range" failures.

To fix this, we now pack packages in batches,
starting with the ones that have no workspace
dependencies and expanding out to include packages
whose dependencies have already been packed.

Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-03-30 11:38:25 +01:00
Patrik Oldsberg 769fa96fe8 docs: address review feedback on notifications docs
Use dynamic import pattern for SubPageBlueprint loader instead of
Promise.resolve, and fix missing comma in TypeScript example.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 12:36:27 +02:00
Charles de Dreuille ac9286767c Merge pull request #33673 from backstage/bui-manifest
Improve BUI manifest
2026-03-30 11:34:01 +01:00
Patrik Oldsberg 964e8f9779 Update docs/notifications/index--old.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-30 12:30:11 +02:00
Patrik Oldsberg b70d3ca1ab Update docs/notifications/index.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-30 12:30:04 +02:00
Patrik Oldsberg e1b0ed1cff Fix changeset to target catalog-import instead of catalog-graph
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 12:28:44 +02:00
Charles de Dreuille 6d120233a2 Update Table.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-30 11:19:43 +01:00
Charles de Dreuille dd880df9f0 Update report.api.md
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-30 11:18:03 +01:00
Charles de Dreuille dc009ed8a9 Improve BUI manifest
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-30 11:02:31 +01:00
Fredrik Adelöw e7f90f47a8 Update packages/cli-module-test-jest/src/commands/repo/test.test.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-03-30 11:53:54 +02:00
Fredrik Adelöw d3b8c370e1 Update docs/tooling/cli/03-commands.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-03-30 11:53:30 +02:00
Fredrik Adelöw 6cc48113fc remove some cli deprecation warnings
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-30 09:44:30 +02:00
Patrik Oldsberg 4a01a66da3 docs: document app/routes redirect configuration
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 01:36:07 +02:00
Patrik Oldsberg e5baa20a1b plugin-app: add redirect config to app/routes extension
Allow users to configure URL redirects on the app/routes extension
through app-config. Redirects are specified as an array of {from, to}
path pairs in the extension config schema.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 00:34:56 +02:00
Patrik Oldsberg 3c0b453d7e Revert NFS page variants, keep only title and icon additions
Roll back the NFS page component changes (BuiHeader, headerVariant,
NfsCatalogGraphPage, NfsDefaultImportPage) from catalog-graph and
catalog-import plugins. Only the title and icon metadata additions to the
new frontend system plugin definitions are retained.

For the kubernetes plugin, replace the generic RiShipLine icon with a
proper Kubernetes helm wheel SVG icon from Simple Icons.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-30 00:19:41 +02:00
Patrik Oldsberg c9132c223c docs: improve new frontend system docs for techdocs, scaffolder, and catalog
Expand the TechDocs home page customization section with concrete examples
showing how to override the page:techdocs extension using a frontend module.

Replace the incorrect scaffolder custom step layouts guide with a note that
this feature is not yet supported in the new frontend system.

Restore missing catalog customization docs for columns, actions, table
options, removing filters, and fully custom catalog pages to ensure parity
with the old frontend system guide.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 23:04:08 +02:00
Patrik Oldsberg 15ab64be96 docs: fix relative link depth in customize-theme guide
The previous fix overshot the directory traversal — three levels up
escapes the docs root. Use two levels (`../../`) to correctly reach the
frontend-system migration guide from golden-path/create-app/.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 22:49:58 +02:00
Patrik Oldsberg a7aedb4f0a scaffolder: restore schema title rendering and fix toolbar test
The migration to the table-based RenderSchema dropped rendering of the
JSON Schema `title` field. Restore it in the ValueCell. Also update the
TemplateEditorToolbar test to select an action before asserting on its
schema details, matching the new list+detail UI.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 22:49:04 +02:00
Patrik Oldsberg 0a7ec8e7c9 scaffolder: widen schema name column to 300px
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 22:41:15 +02:00
Patrik Oldsberg 93cb19813f fix: correct broken link to extension overrides documentation
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 22:40:19 +02:00
Patrik Oldsberg dce631e6f7 docs: fix broken relative link in customize-theme guide
Fix the relative path to the sidebar customization section in the
migration guide, which was missing two levels of directory traversal.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 22:39:53 +02:00
Patrik Oldsberg 8ec254cd4b docs: migrate feature docs to new frontend system as primary content
Rewrite documentation for TechDocs, Software Templates, Software Catalog,
Search, and Kubernetes features to use the new frontend system as the
primary installation and configuration instructions. Old frontend system
instructions are moved to separate `--old` suffixed files for pages with
substantial legacy content, or updated inline for pages with minimal
old-system content.

Files migrated:
- techdocs/getting-started.md
- techdocs/how-to-guides.md
- software-templates/writing-custom-step-layouts.md
- software-templates/writing-custom-field-extensions.md
- software-templates/index.md
- software-catalog/catalog-customization.md
- search/getting-started.md
- search/how-to-guides.md
- kubernetes/installation.md

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 21:47:46 +02:00
Patrik Oldsberg 7c1b319e74 docs: migrate getting-started docs to new frontend system
Migrate four documentation pages to use the new frontend system as the
primary content, moving the old frontend system instructions to --old
files following the established convention:

- configure-app-with-plugins: rewrite for auto-discovered plugins
- customize-theme: rewrite for ThemeBlueprint/extension-based theming
- enable-public-entry: make new frontend system the primary content
- quickstart-app-plugin: remove manual sidebar wiring instructions

Each main file gets an info banner linking to the --old variant, and
each --old file gets a banner linking back to the current guide.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 21:35:17 +02:00
Patrik Oldsberg 23f731118d docs: migrate OIDC auth docs to new frontend system
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 21:32:52 +02:00
Patrik Oldsberg 2ad2771944 docs: migrate notifications docs to new frontend system
Rewrite the notifications documentation pages to target the new
frontend system as the primary content, and move the old frontend
system instructions to --old files following the established convention.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 21:30:48 +02:00
Patrik Oldsberg 1d94f0f9f7 fix: prevent actions list from expanding beyond screen edge
Add minWidth and overflow constraints to the List component so long
descriptions are truncated with ellipsis instead of overflowing the
grid column.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-29 21:24:37 +02:00
Fredrik Adelöw 0336f92de8 Merge pull request #33658 from backstage/freben/clarify-fetch-failures
Add FetchMiddlewares.clarifyFailures and improve permission error handling
2026-03-29 12:51:04 +02:00
Fredrik Adelöw 0eb8d1a31f Merge pull request #33290 from backstage/freben/catalog-exists-query-optimization
catalog-backend: optimize entity filter queries with EXISTS
2026-03-29 12:48:38 +02:00
Fredrik Adelöw 4538f05b24 Address PR review: extract shared searchExists helper and rename strategy
- Extract shared `searchExists` helper into `searchSubquery.ts` to avoid
  duplicate EXISTS subquery logic between the two filter modules
- Rename `applyInStrategy` to `applyExistsStrategy` to reflect the actual
  query shape
- Update block comment with correct EXISTS SQL examples
- Remove unused `strategy` parameter from `applyEntityFilterToQuery`

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-29 12:31:01 +02:00
Patrik Oldsberg 9f3affb864 Merge pull request #33601 from thomvaill/github-provider-fix-validateLocationsExist-with-branch-filter
fix(github-provider): `validateLocationsExist: true` + `filters.branch` bug [contribfest]
2026-03-29 12:14:23 +02:00
Fredrik Adelöw d19e32ccad Use duck-typing for Request check and make clarification best-effort
Replace instanceof Request with a duck-type isRequestLike helper to
avoid cross-realm issues, and wrap the clarification logic in a
try/catch so it can never mask the original error.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-29 10:30:22 +02:00
Fredrik Adelöw 741d367817 Merge pull request #33659 from backstage/freben/parallelize-cli-reports 2026-03-29 08:23:49 +02:00