Commit Graph

73057 Commits

Author SHA1 Message Date
Patrik Oldsberg ed6b53cf83 Remove bare catch-and-rethrow blocks in bitbucket and kubernetes plugins
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-13 00:35:42 +02:00
Fredrik Adelöw 774e641e45 Merge pull request #33111 from AmateurMind/fix/gitlab-discovery-topic-filter 2026-04-12 12:47:29 +02:00
Andre Wanlin a52a2236d4 Merge pull request #33808 from meleu/patch-3
Update TechDocs CLI repo link, as the old repo was archived in 2021
2026-04-11 15:18:43 -05:00
Patrik Oldsberg 0ecb8225cb Merge pull request #33839 from jonkoops/deprecate-proxy-bootstrap
refactor(cli-common): deprecate `bootstrapEnvProxyAgents()` in favor of Node.js built-in proxy support
2026-04-11 12:05:55 +02:00
Fredrik Adelöw 6a34f8a26f Merge pull request #33841 from backstage/dependabot/npm_and_yarn/basic-ftp-5.2.2 2026-04-11 08:31:36 +02:00
dependabot[bot] dcfc229155 chore(deps): bump basic-ftp from 5.2.0 to 5.2.2
Bumps [basic-ftp](https://github.com/patrickjuchli/basic-ftp) from 5.2.0 to 5.2.2.
- [Release notes](https://github.com/patrickjuchli/basic-ftp/releases)
- [Changelog](https://github.com/patrickjuchli/basic-ftp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/patrickjuchli/basic-ftp/compare/v5.2.0...v5.2.2)

---
updated-dependencies:
- dependency-name: basic-ftp
  dependency-version: 5.2.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-10 21:32:39 +00:00
Aramis Sennyey 2b4f97adf7 docs: frontend plugin golden path (#33541)
* docs: frontend plugin golden path guide

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* add changeset

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* Apply suggestion from @aramissennyeydd

Signed-off-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com>
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* fix template

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* fix template test

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* print stderr on failure

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* try writing directly

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* maybe this?

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* address feedback

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* fix: avoid destructuring FetchApi and fix template issues

- Use fetchApi.fetch() instead of destructuring to preserve this binding
- Add discoveryApi and fetchApi to useAsync dependency array
- Use react-use/esm/useAsync to match repo conventions
- Replace waitFor + getAllByText with findByText in error test
- Update HTTP client doc to match template changes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* fix: address docs review feedback

- Use stronger guidance tone in scaffolding guide intro
- Slim down file tree to show folder structure only
- Mention that plugin path depends on chosen plugin ID
- Link to installation docs for non-discovery case
- Quote page:todo YAML key to avoid parse errors
- Remove "new" from "new frontend system" in template README

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* fix: improve error handling in e2e plugin creation

- Narrow error to non-null object before using in operator
- Also write error.stdout since tools like Jest report to stdout
- Avoid variable shadowing with outer scope stdout/stderr

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* revert: keep destructured fetch from FetchApi

Destructuring fetch from FetchApi is fine — revert to original
pattern while keeping the dependency array and other fixes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* feat: use @backstage/ui components in frontend plugin template

Replace core-components layout and table with @backstage/ui equivalents:
- Use HeaderPage and Container instead of Page, Header, Content, ContentHeader
- Use BUI Table with useTable and CellText instead of core-components Table
- Add @backstage/ui to template package.json dependencies
- Update poking-around docs to reflect BUI component usage

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* fix: add example data when backend request fails

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* better logging setup

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* address feedback

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* better config driven example

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* debug logs

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* fix build failure related to unknown version

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* revert e2e run changes

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com>

* skip the discovery api for now

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* remove another ref

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com>

---------

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
Signed-off-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-10 14:00:55 -04:00
Jon Koops 46ff47034c refactor(cli-common): deprecate bootstrapEnvProxyAgents() in favor of Node.js built-in proxy support
Node.js 22.21.0+ and 24.5.0+ support proxy configuration natively
via NODE_USE_ENV_PROXY=1 and --use-env-proxy, making the legacy
global-agent and undici proxy workarounds unnecessary.

Rather than removing the function immediately, deprecate it with
context-aware runtime warnings that guide users based on their
current configuration:

- Users with GLOBAL_AGENT_* vars are told to switch to standard
  HTTP_PROXY/HTTPS_PROXY and set NODE_USE_ENV_PROXY=1.
- Users with HTTP_PROXY/HTTPS_PROXY but no NODE_USE_ENV_PROXY are
  told to set it.
- Users who have already opted in to Node.js built-in proxy see no
  warning, and the legacy bootstrap is skipped entirely.

See #33444

Signed-off-by: Jon Koops <jonkoops@gmail.com>
2026-04-10 16:53:33 +02:00
Fredrik Adelöw 05b1de4321 Merge pull request #33680 from rolandfuszenecker-seon/feat/aws-rds-iam-auth
feat(backend-defaults): add AWS RDS IAM authentication support for PostgreSQL
2026-04-10 16:47:13 +02:00
Fredrik Adelöw f0d82ac4b0 Merge pull request #33834 from backstage/freben/exit
exit prerelease mode
2026-04-10 10:44:50 +02:00
Fredrik Adelöw de2eb783a0 exit prerelease mode
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-10 10:33:51 +02:00
Patrik Oldsberg 7ff3429bda Merge pull request #33831 from drodil/get_notifications_action
feat(notifications): action to get users notifications
2026-04-10 09:42:16 +02:00
Hellgren Heikki 4c1fd438b3 feat(notifications): action to get users notifications
useful for mcp for example to get the daily what is going on
status.

Signed-off-by: Hellgren Heikki <heikki.hellgren@op.fi>
2026-04-10 10:19:46 +03:00
Fredrik Adelöw a25a9b8573 Merge pull request #33826 from backstage/dependabot/npm_and_yarn/axios-1.15.0 2026-04-09 21:28:03 +02:00
dependabot[bot] 9b09aba3ed chore(deps-dev): bump axios from 1.14.0 to 1.15.0
Bumps [axios](https://github.com/axios/axios) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.14.0...v1.15.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.15.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 18:32:42 +00:00
Patrik Oldsberg aebba3f485 Merge pull request #33426 from backstage/rugvip/rename-create-app-templates
create-app: rename template directories
2026-04-09 20:25:58 +02:00
Patrik Oldsberg 70336a127c Merge pull request #33664 from backstage/scaffolder-actions-single-table
scaffolder: migrate actions page to @backstage/ui components
2026-04-09 20:25:49 +02:00
Fredrik Adelöw 5b61c2f339 Merge pull request #33822 from backstage/freben/refactor-postgres-retry-loop
refactor(backend-defaults): clean up database creation retry loop
2026-04-09 17:11:30 +02:00
Patrik Oldsberg 6541cbfc58 Remove stray package.json from create-app templates
These empty `{}` files were accidentally committed during the template
directory rename and override the properly templated package.json
generated from package.json.hbs, causing E2E tests to fail.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-09 15:52:20 +02:00
Patrik Oldsberg 7fc1a406d2 Increase E2E timeouts for default-app template
The new frontend system app takes longer to compile and render on
Windows CI runners. Switch from port-based to URL-based server
readiness detection and increase expect timeout to 30s to avoid
flaky failures on slow runners.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-09 15:52:20 +02:00
Patrik Oldsberg 02a0f0dfa0 Use exact match for sidebar link assertions in E2E template test
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-09 15:52:20 +02:00
Patrik Oldsberg f746ec202a e2e-test: fix crash when app has no devDependencies
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-09 15:52:20 +02:00
Patrik Oldsberg 491297557e Add missing package versions to test mock for default-app template
The test was updated to use the default-app template (renamed from
next-app), but the mock version list was missing packages that this
template requires such as @backstage/core-compat-api,
@backstage/frontend-defaults, @backstage/frontend-plugin-api, and
others. Also sorted the mock entries alphabetically.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-09 15:52:20 +02:00
Patrik Oldsberg d312841559 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-04-09 15:51:28 +02:00
Patrik Oldsberg 83624f080b Fix broken doc link after template directory rename
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-09 15:51:28 +02:00
Patrik Oldsberg 25418372e0 create-app: rename template directories
Rename `next-app` to `default-app` and `default-app` to `legacy-app`
to better reflect their roles.

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-04-09 15:51:27 +02:00
Andre Wanlin eb8a6f7291 Merge pull request #33346 from awanlin/create-app/mcp-actions
create-app - Added the `mcp-actions-backend` and the `plugin-auth` plugins
2026-04-09 08:48:17 -05:00
Andre Wanlin 72a493a56a create-app - Added the mcp-actions-backend plugin
Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Changes based on feedback

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Minor corrections

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Default to false

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Corrections

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Feedback

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Feedback changes

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Feedback changes

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Added tip

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

More feedback changes

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Fixed typos

Signed-off-by: Andre Wanlin <awanlin@spotify.com>

Reorder auth

Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2026-04-09 08:33:59 -05:00
Fredrik Adelöw 547258f67b refactor(backend-defaults): clean up database creation retry loop
Refactor the postgres database creation retry loop to avoid an
unnecessary sleep after the final failed attempt, and improve
readability by using named variables.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-09 15:12:07 +02:00
Ben Lambert c705d44e4b feat(cli-module-actions): improve CLI formatting, help output, and UX (#33517)
* fix(cli-module-actions): show schema flags in execute --help

When an action ID is provided with --help, fetch the action schema and
display action-specific flags. Falls back to generic help if auth fails.

Signed-off-by: benjdlambert <ben@blam.sh>

* fix(cli-module-actions): show schema flags in execute --help and fix build errors (#33518)

* feat(cli-module-actions): improve CLI output formatting and UX

- Pretty grouped list output with colored headers and action titles
- Custom help rendering for execute --help with markdown descriptions
- Support complex schema types (object, array, union) as JSON flags
- Show server error details instead of generic status codes
- Accept multiple plugin IDs in sources add/remove

Signed-off-by: benjdlambert <ben@blam.sh>

* fix(cli-module-auth): preserve instance metadata on re-login

Signed-off-by: benjdlambert <ben@blam.sh>

* fix: address code review feedback

- Extract triplicated cli() config into showGenericHelp helper
- Strip ANSI escape sequences before rendering server markdown
- Configure marked-terminal extension once via lazy singleton
- Parallelize listGrouped HTTP requests with Promise.all
- Log actual error message in execute help catch block
- Fix marked version in declarations.d.ts comment
- Add tests for sourcesAdd/sourcesRemove batch operations
- Add test for execute JSON parse error path
- Add tests for login metadata preservation on re-auth

Signed-off-by: benjdlambert <ben@blam.sh>

* fix: use RegExp constructor to satisfy no-control-regex lint rule

Signed-off-by: benjdlambert <ben@blam.sh>

* fix: improve ANSI stripping, default info.usage, add renderMarkdown comment

- Extend stripAnsiEscapes to cover OSC, DCS, APC, PM sequences
- Default info.usage to avoid undefined in help output
- Document why marked.use() is called per invocation

Signed-off-by: benjdlambert <ben@blam.sh>

* fix: use strip-ansi, fresh Marked instance, add allOf support

- Replace hand-rolled ANSI stripping with strip-ansi package
- Use fresh Marked instance per call instead of mutating global singleton
- Add allOf to complex type detection alongside anyOf/oneOf
- Add happy-path test for valid JSON complex flag parsing
- Bump changeset to minor for new user-facing capabilities

Signed-off-by: benjdlambert <ben@blam.sh>

* refactor: collapse listGrouped into list on ActionsClient

Signed-off-by: benjdlambert <ben@blam.sh>

* refactor: clean up cli-module-actions structure

- Extract shared pluginSourcesSchema into lib/pluginSources.ts
- Merge schemaToFlags and getComplexKeys into single return value
- Move CleyeFlag-to-FlagInfo conversion into format.ts
- Extract parseArgs and showActionHelp from execute command body

Signed-off-by: benjdlambert <ben@blam.sh>

---------

Signed-off-by: benjdlambert <ben@blam.sh>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
2026-04-09 13:53:44 +02:00
Claire Peng ee0c95d971 Merge pull request #33820 from backstage/clairep/update_docs_openAPI
Clairep/update docs open api
2026-04-09 12:11:56 +01:00
Claire Peng 5185e919cf delete trailing whitespace
Signed-off-by: Claire Peng <clairep@spotify.com>
2026-04-09 11:42:10 +01:00
Roland Fuszenecker 9a60dcd9fc chore: deduplicate yarn.lock
Signed-off-by: Roland Fuszenecker <roland.fuszenecker@seon.io>
2026-04-09 12:07:32 +02:00
Claire Peng da17844798 add changeset for docs updates
Signed-off-by: Claire Peng <clairep@spotify.com>
2026-04-09 10:57:56 +01:00
Claire Peng f713b2459b add note about API Base URL in api-docs plugin Readme
Signed-off-by: Claire Peng <clairep@spotify.com>
2026-04-09 10:57:56 +01:00
Claire Peng d4979b5178 add note about API Base URL in descriptor-format docs page
Signed-off-by: Claire Peng <clairep@spotify.com>
2026-04-09 10:57:56 +01:00
Fredrik Adelöw 36be7c9bd5 Merge pull request #33818 from backstage/maratd/remove-humanize-entity-ref-org
fix(org): replace deprecated humanizeEntityRef with Catalog Presentation API
2026-04-09 11:39:37 +02:00
Johan Persson 17eb8e03e0 fix(ui): wire up aria-describedby for form field descriptions
Form field descriptions were visually rendered but not connected
to inputs via aria-describedby, making them invisible to screen
readers.

Added a descriptionSlot prop to FieldLabel that renders the
description as a React Aria <Text slot="description"> element,
letting React Aria automatically wire up aria-describedby on
the associated input.

Applied to TextField, PasswordField, SearchField, Select,
RadioGroup, and CheckboxGroup. Slider already handled this
manually and is unchanged.

Also added a missing WithDescription story for RadioGroup.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-09 11:05:11 +02:00
Marat Dyatko f1f59b13e1 fix(org): replace deprecated humanizeEntityRef with Catalog Presentation API
Replace `humanizeEntityRef(parseEntityRef(owner), { defaultKind: 'group' })`
with `entityPresentationSnapshot(ref, { defaultKind: 'group' }).primaryTitle`
in the OwnershipCard's `useGetEntities` hook. This was the last remaining
usage of the deprecated function in the codebase.

Signed-off-by: Marat Dyatko <maratd@spotify.com>
Made-with: Cursor
Signed-off-by: Marat Dyatko <maratd@spotify.com>
Made-with: Cursor
Signed-off-by: Marat Dyatko <maratd@spotify.com>
Made-with: Cursor
2026-04-09 10:45:22 +02:00
Marat Dyatko 09e17c8a65 test(org): add queryParams coverage for OwnershipCard useGetEntities
The existing tests never exercised `getQueryParams` because the mock
catalog API always returned empty items. These new tests verify that the
generated query parameters include correctly humanized owner entity refs,
handle multiple owners, and group entities by kind and type.

Made-with: Cursor
Signed-off-by: Marat Dyatko <maratd@spotify.com>
Made-with: Cursor
2026-04-09 10:25:33 +02:00
Fredrik Adelöw 0dc2cf7e43 Merge pull request #33815 from suhr25/fix/scaffolder-after-zero-query-param
fix: correctly handle after=0 in task events endpoint
2026-04-09 09:45:29 +02:00
Johan Persson 2840476b04 feat(ui): resolve route-relative hrefs by default in useDefinition
Made href resolution always-on in useDefinition instead of requiring
each component to opt in via resolveHref: true. The hook now always
calls useInRouterContext/useHref and only applies the resolved value
when an href prop is actually provided, preventing href from leaking
into components that don't accept it.

Removed the resolveHref field from ComponentConfig, the
ResolveHrefConstraint type, and resolveHref: true from all 14
component definitions. Also removed a now-unnecessary type cast
in the Text component.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-09 09:38:34 +02:00
Fredrik Adelöw aba2f0a980 Merge pull request #33386 from mvanhorn/feat/catalog-graph-presentation-api
feat(catalog-graph): use Catalog Presentation API instead of humanizeEntityRef
2026-04-09 09:16:51 +02:00
Suhrid Marwah 1d95cd302d test(scaffolder): add test for after=0 query param handling
Signed-off-by: Suhrid Marwah <suhridmarwah07@gmail.com>
2026-04-09 10:54:11 +05:30
suhr25 4ec08648d7 Merge branch 'master' of https://github.com/backstage/backstage into fix/scaffolder-after-zero-query-param 2026-04-09 10:50:16 +05:30
Suhrid Marwah 8a42f77daa chore(changeset): add changeset for after=0 fix
Signed-off-by: Suhrid Marwah <suhridmarwah07@gmail.com>
2026-04-09 10:50:00 +05:30
Suhrid Marwah 6408e4aa8a fix(scaffolder): handle after=0 in task events polling endpoint
Signed-off-by: Suhrid Marwah <suhridmarwah07@gmail.com>
2026-04-09 10:27:15 +05:30
Fredrik Adelöw 48b3883497 Merge pull request #33814 from backstage/dependabot/npm_and_yarn/fast-xml-parser-4.5.6 2026-04-09 06:26:59 +02:00
dependabot[bot] 2fdf902bc6 chore(deps): bump fast-xml-parser from 4.5.4 to 4.5.6
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 4.5.4 to 4.5.6.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v4.5.4...v4.5.6)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 4.5.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-09 02:30:02 +00:00
backstage-goalie[bot] 3848c82f64 Merge pull request #33813 from backstage/renovate/npm-nodemailer-vulnerability
chore(deps): update dependency nodemailer to v8.0.5 [security]
2026-04-08 23:54:11 +00:00