Skip to content

[pull] master from backstage:master#508

Merged
pull[bot] merged 65 commits intomiqdigital:masterfrom
backstage:master
Mar 17, 2026
Merged

[pull] master from backstage:master#508
pull[bot] merged 65 commits intomiqdigital:masterfrom
backstage:master

Conversation

@pull
Copy link

@pull pull bot commented Mar 17, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

GabDug and others added 30 commits March 14, 2026 13:56
Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
Mark all pages in docs/plugins/ with legacy admonition banners pointing
to the appropriate new frontend system and backend system documentation.
Rename the sidebar section to "Plugins (Legacy)" and move it lower in
the navigation hierarchy. Add cross-references from the new frontend
system building-plugins guide to relevant cross-cutting topics (i18n,
analytics, feature flags, search) that still live in the legacy section.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Instead of just referencing the legacy docs/plugins documentation, adapt
and add them as new pages under frontend-system/building-plugins/ with
updated imports and examples for the new frontend system.

Also moves the OpenAPI sidebar entry under Framework instead of top-level.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
- Update internationalization page to use new frontend system patterns
  (TranslationBlueprint from @backstage/plugin-app-react instead of
  createApp __experimentalTranslations)
- Fix AnalyticsImplementationBlueprint import to use @backstage/plugin-app-react
- Remove search integration page from frontend-system section as it
  belongs in the core feature search docs

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
The caution block referenced a new frontend system version of the
search integration doc that was never created. Remove the dead link
while keeping the rest of the legacy notice intact.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
The page only contained a TODO placeholder and was never filled in.

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

Signed-off-by: David Festal <dfestal@redhat.com>
When the transform tests were moved from @backstage/cli to
@backstage/cli-module-build, the coveragePathIgnorePatterns config
was not carried over. This caused test failures in CI when running
with --coverage, as Jest tried to instrument the fixture files
containing fake node_modules packages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
…nd-plugin-api

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
The __fixtures__ directory that required this exclusion was moved to
@backstage/cli-module-build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
The new frontend system is now the default template when creating a new
Backstage app. The previous `--next` flag has been replaced with a
`--legacy` flag that can be used to create an app using the old frontend
system instead.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
…coverage

fix(cli): exclude __fixtures__ from coverage in cli-module-build
Renamed the CLI templates for frontend plugins:
- new-frontend-plugin → frontend-plugin
- new-frontend-plugin-module → frontend-plugin-module
- frontend-plugin (legacy) → legacy-frontend-plugin

Added auto-detection logic that checks packages/app/package.json to
determine which frontend system the app uses. When using default
templates, only the appropriate frontend plugin template is shown:
- Apps with @backstage/frontend-defaults see the new system templates
- Apps with @backstage/app-defaults see the legacy template

Both templates display as "frontend-plugin" to users, so existing
workflows are preserved while automatically using the correct template.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Clarify the legacy frontend plugin template label and lock in template selection behavior for legacy and new frontend system apps.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Align the next-app template output with the scaffolded app Prettier config so the default app E2E checks pass.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Add the missing frontend dev utils package so newly scaffolded frontend plugins compile in the create-app E2E flow.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Use the generated app root API when switching the scaffolded app to React 17 so the new frontend app still type-checks in E2E.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Keep the generated app stylesheet import when rewriting the new frontend app entrypoint for React 17 so the E2E app boots with the same UI setup.

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: Andre Wanlin <awanlin@spotify.com>
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
docs: sunset the docs/plugins section as legacy documentation
Add @backstage/cli-module-new to the version map so that the
next-app template can resolve it during templating, and update
the E2E test to build the dist workspace from the next-app
template since it is now the default.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
awanlin and others added 18 commits March 17, 2026 12:35
…efs-stable

Promote translation refs from alpha to stable entry points
…ader-ready-with-bundle-command

chore(dyamic-frontend-feature-loader): update README with the new `bundle` command
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Introduces a class-based authentication management API in @backstage/cli-node
that reads the on-disk instance store, transparently refreshes expired tokens,
and provides a convenient surface for other CLI modules to consume.

The split keeps filesystem-based instance selection and writes owned by
cli-module-auth, while reading and consuming the current instance is
available through CliAuth in cli-node.

Migrates cli-module-actions to use the new API and deprecates the ad-hoc
function exports from cli-module-auth.

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>
Since cli-module-auth and cli-module-actions are not yet released,
remove deprecated exports instead of keeping them. Also make httpJson
and getSecretStore internal to cli-node, duplicating the small httpJson
wrapper locally in each consuming package.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
- Convert CliAuth getters to methods (getInstanceName, getBaseUrl) so
  options can be added in the future
- Remove StoredInstance from cli-node public API, hiding instance details
- Move secretStore to cli-internal for re-use, refactoring from fs-extra
  to node:fs
- Add shared getAuthInstanceService helper in cli-internal for
  constructing secret-store service keys
- Define StoredInstance locally in cli-module-auth instead of importing
  from cli-node
- Update all consumers and tests for the new method-based API

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
- Replace getConfig<T> with getMetadata/setMetadata on CliAuth, removing
  the unsafe type parameter in favor of returning unknown
- Move updateInstanceConfig from cli-module-auth public API to
  CliAuth.setMetadata, removing the cross-package dependency
- Rename 'config' to 'metadata' in StoredInstance and storage schemas
- Add zod validation at consumer sites (cli-module-actions) for
  type-safe metadata access
- Fix zod imports to use zod/v3 for compatibility with zod v4
- Add proper-lockfile to cli-node for metadata write locking
- Refactor cli-node storage from fs-extra to node:fs
- Remove @backstage/cli-module-auth dependency from cli-module-actions

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
The @backstage/cli-module-auth package is not yet released, so there
is no need for a changeset tracking its exports.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
- Fix getAllInstances to handle empty instance array without throwing
- Persist updated token expiry timestamps to disk after refresh
- Mark internal httpJson helpers as @internal instead of @public

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
The new frontend system does not support React 17, so the E2E test
no longer switches the scaffolded app to React 17 for a second
verification pass.

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

Make the new frontend system the default for new apps
…o-cli-node

cli-node: add CliAuth class for shared CLI authentication
Refactor Slack Notifications Backend Module to use MetricsApi
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants