Commit Graph

73505 Commits

Author SHA1 Message Date
Emma Indal 5b85902ede fix(ui): show focus indicator on Card when used as a link
Card's focus-ring CSS keys off data-focus-visible on the
bui-CardTrigger, but Link (the trigger when href is set) wasn't
emitting it because useLink does not track focus-visible state.
Compose useFocusRing in Link so keyboard focus is now properly
indicated on Card href=... and any other Link styled via
[data-focus-visible].

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Emma Indal <emma.indahl@gmail.com>
2026-05-04 17:18:52 +02:00
Fredrik Adelöw 1004d7bd10 Merge pull request #34117 from backstage/freben/gitlab-integration-fetch-fixes
fix(integration): correct GitLab fetch mode and retry on network errors
2026-05-04 16:37:42 +03:00
Fredrik Adelöw da5ba4eecd Handle non-numeric Retry-After header values gracefully
Validate the parsed Retry-After value is a finite positive number before
using it as a delay, falling back to exponential backoff otherwise. This
prevents a near-zero delay tight retry loop when the header contains an
HTTP-date or unexpected value.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-04 15:12:02 +02:00
Fredrik Adelöw dd78c9cffa defer fetch lookup so test interceptors apply
Capturing globalThis.fetch as a value at construction time meant the
GitLabUrlReader tests bypassed the MSW fetch interceptor and hit the
real gitlab.com (returning 401). Wrapping the call resolves fetch at
invocation time so the patched fetch is used.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-05-04 14:01:43 +02:00
Fredrik Adelöw 1500fe31b4 restructure retry loop to remove parallel response/error variables
Each catch path now decides for itself whether to rethrow or sleep and
continue, so the loop body has a definite Response after the try/catch
and there is no shared `error: unknown` slot that could in principle be
thrown unset. Pulls the exponential delay into a tiny local helper to
share between the two retry paths.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-05-04 11:28:29 +02:00
Fredrik Adelöw d7f994308e drop non-null assertion in retry loop
Flip the order of the response/error check so TypeScript narrows the
types itself rather than relying on `response!` to assert what the code
already guarantees by construction.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-05-04 11:17:51 +02:00
Fredrik Adelöw 90d3968e6c address review comments
- Cancel discarded response bodies before retrying so the underlying
  connection can be returned to the pool instead of being held open
  until the response is garbage collected.
- Stop asserting on the rejected error message in the network-error
  retry test; track rejection via a flag so the test isn't tied to
  fetch/MSW error strings.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-05-04 11:01:41 +02:00
Patrik Oldsberg 89d9e64abd Merge pull request #34095 from AmbrishRamachandiran/react-aria-link
Updates two stale React Aria documentation links in the docs-ui compnent pages
2026-05-04 10:47:27 +02:00
Fredrik Adelöw 6b112d3fe8 fix(integration): correct GitLab fetch mode and retry on network errors
Removes a misplaced `mode: 'same-origin'` option that would have rejected
cross-origin requests when the integration is used from a browser, and
extends the retry wrapper so transient network errors are retried using
the configured `maxRetries`. Caller-initiated aborts still propagate
immediately.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-05-04 10:43:49 +02:00
Charles de Dreuille 77082ddc3a Merge pull request #34103 from backstage/cd/plugin-header-spacing
fix(ui): adjust plugin header spacing
2026-05-04 09:36:19 +01:00
Charles de Dreuille eecd8130dc fix(ui): tune plugin header core spacing
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-05-04 08:41:17 +01:00
Charles de Dreuille 36825fe290 Update PluginHeaderAndHeader.stories.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-30 15:01:45 +01:00
Miklós Kiss e5f31ff3a2 Add Scaffolder Studio plugin to plugin directory (#34092)
Adds a Scaffolder category entry for @kissmiklosjr/plugin-scaffolder-studio
with an iconUrl pointing at a new SVG illustrating the plugin's template
graph editor.

Signed-off-by: Kiss Miklos <kissmiklosjr@gmail.com>
2026-04-30 09:37:45 -04:00
Andre Wanlin bb7febddd6 Merge pull request #33252 from AdityaK60/devtools-bui-config
Migrate ConfigContent Component to Backstage UI
2026-04-30 07:02:45 -05:00
Charles de Dreuille 4955e51e07 fix(ui): handle core page after plugin header
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-30 09:56:17 +01:00
Charles de Dreuille 021b36800f fix(ui): collapse plugin header spacing before headers
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-30 09:33:18 +01:00
Peter Macdonald 6eda127a8c Merge pull request #33299 from chanchalkhatri19/doc/aws-s3-add-account-id-config
Doc: aws s3 add account id config
2026-04-30 09:23:18 +02:00
Charles de Dreuille a9f3d7189f Update PluginHeader.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-29 19:07:59 +01:00
Charles de Dreuille 93d1d40e64 fix(ui): refine plugin header spacing
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-29 19:07:59 +01:00
Charles de Dreuille 38bb056aa6 fix(ui): adjust plugin header spacing
Align PluginHeader spacing across tabbed and non-tabbed variants so the component owns the surrounding page spacing more consistently.

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-29 19:07:59 +01:00
Andre Wanlin 84913005fd Merge pull request #31838 from karthikjeeyar/mkdocs-patch
feat(techdocs): add app-config option to disable external font download
2026-04-29 12:47:12 -05:00
Ben Lambert a0f58971a7 chore: fix issue with types (#34104)
Signed-off-by: benjdlambert <ben@blam.sh>
2026-04-29 15:50:39 +00:00
Ben Lambert fa06df607e Merge commit from fork
Signed-off-by: Benjamin Lambert <benjdlambert@gmail.com>
Signed-off-by: benjdlambert <ben@blam.sh>
2026-04-29 15:51:19 +02:00
AmbrishRamachandiran 862dd62dec Updates two stale React Aria documentation links in the docs-ui component pages.
Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>
2026-04-29 11:17:28 +05:30
Karthik 610b42f72f update documentation and improve types
Signed-off-by: Karthik <karthik.jk11@gmail.com>
2026-04-29 00:19:03 +05:30
Patrik Oldsberg 151eb3f8ff Merge pull request #34024 from backstage/changeset-release/master
Version Packages (next)
2026-04-28 19:41:07 +02:00
github-actions[bot] 7295193bb6 Version Packages (next) 2026-04-28 15:53:09 +00:00
renovate[bot] 07b7490e79 fix(deps): update dependency next to v16.2.3 [security]
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-28 17:45:50 +02:00
James Brooks e7fc79fb13 Add support for sections to Select (#34012)
Updates the Select component to accept a set of sections with options as opposed to just a flat list of options.

---------

Signed-off-by: James Brooks <jamesbrooks@spotify.com>
2026-04-28 16:13:39 +01:00
Patrik Oldsberg 080dcbb982 Merge pull request #34085 from backstage/rugvip/seed-yarn-lock-protobufjs-inquire
create-app: pin protobufjs and @protobufjs/inquire in yarn.lock seed
2026-04-28 16:27:39 +02:00
Patrik Oldsberg 7daa136495 create-app: pin protobufjs and @protobufjs/inquire in yarn.lock seed
@protobufjs/inquire@1.1.1 dropped the eval-based workaround that hid its
dynamic require() from bundlers, which makes webpack/rspack emit a
"Critical dependency: the request of a dependency is an expression"
warning that fails the build under CI=true. protobufjs@7.5.6 also
bumped its dependency on @protobufjs/inquire from ^1.1.0 to ^1.1.1, so
pinning just the inquire range isn't enough — pin protobufjs to 7.5.5
for all known workspace ranges as well.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-28 16:05:29 +02:00
renovate[bot] 6de96f171d Update CodeMirror
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-28 11:58:57 +02:00
renovate[bot] bd389d6458 chore(deps): update dependency motion to v12.38.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-28 11:45:43 +02:00
renovate[bot] 015362b551 chore(deps): update dependency @uiw/react-codemirror to v4.25.9
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-28 11:30:17 +02:00
renovate[bot] 754e2bf0df chore(deps): update dependency @uiw/codemirror-themes to v4.25.9
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-28 11:29:07 +02:00
dependabot[bot] e1e97020bf build(deps): bump yaml from 2.8.1 to 2.8.3 in /docs-ui
Bumps [yaml](https://github.com/eemeli/yaml) from 2.8.1 to 2.8.3.
- [Release notes](https://github.com/eemeli/yaml/releases)
- [Commits](https://github.com/eemeli/yaml/compare/v2.8.1...v2.8.3)

---
updated-dependencies:
- dependency-name: yaml
  dependency-version: 2.8.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 11:27:46 +02:00
dependabot[bot] 7cfbdad7bb build(deps): bump picomatch from 2.3.1 to 2.3.2 in /docs-ui
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-28 11:27:01 +02:00
Ferin Patel 07e08beac1 feat: Add status check functions for scaffolder steps (#32890)
* feat: Add status check functions for scaffolder steps

- Introduced `always()` and `failure()` functions to control step execution after failures.
- Updated documentation to explain usage of new status check functions.
- Enhanced NunjucksWorkflowRunner to process these functions in step conditions.
- Added tests to verify behavior of steps using `always()` and `failure()`.

Signed-off-by: ferin79 <ferinpatel79@gmail.com>

* feat: Enhance status check functions in scaffolder steps

- Updated documentation to clarify usage of status check functions with template expressions.
- Modified tests to reflect changes in syntax for status checks.
- Refactored NunjucksWorkflowRunner to ensure proper handling of status check functions in step conditions.

Signed-off-by: ferin79 <ferinpatel79@gmail.com>

* docs: Clarify usage of status check functions in writing templates

- Removed redundant explanation about truthy conditions after step failure.
- Streamlined the description for better clarity on status check functions.

Signed-off-by: ferin79 <ferinpatel79@gmail.com>

---------

Signed-off-by: ferin79 <ferinpatel79@gmail.com>
2026-04-28 11:16:59 +02:00
Aramis Sennyey ffae2d437c style: use numbered lists (#34057)
* style: use numbered lists

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

* Update docs/contribute/doc-style-guide.md

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

* fix prettier

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

---------

Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
Signed-off-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-27 16:38:56 -04:00
Patrik Oldsberg 50c324e617 Merge pull request #34076 from wss-dogara/feat/external-route-ref-test-support
Add support for external refs renderInTestApp
2026-04-27 22:07:34 +02:00
Dylan O'Gara c0f4540146 Remove type name from JSDoc comments
Signed-off-by: Dylan O'Gara <dogara@webstaurantstore.com>
2026-04-27 14:30:38 -04:00
Dylan O'Gara fa363f9d3c Add support for external refs renderInTestApp
Signed-off-by: Dylan O'Gara <dogara@webstaurantstore.com>
2026-04-27 14:06:08 -04:00
Charles de Dreuille ca53b86336 Merge pull request #34067 from backstage/cursor/header-sticky-prop
BUI - Add sticky Header support
2026-04-27 14:20:23 +01:00
Charles de Dreuille db5956a2a0 chore(ui): note header class breaking change
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-27 13:41:12 +01:00
Charles de Dreuille 5efddbdbca chore(ui): bump header sticky changeset to minor
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-27 11:30:04 +01:00
Charles de Dreuille 5dce801a16 Merge pull request #34069 from backstage/cursor/cardbody-min-height
fix(ui): set CardBody minimum height
2026-04-27 10:00:52 +01:00
Charles de Dreuille de75f7c0f4 fix(ui): set CardBody minimum height
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-27 08:56:12 +01:00
Charles de Dreuille ec93dd281a fix(ui): always render headerTop, adjust content padding, add story
- Always render headerTop wrapper for consistent spacing
- Reduce default content padding-top from space-6 to space-3
- Add PluginHeaderAndHeader story and update Spotify theme

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 21:15:42 +01:00
Charles de Dreuille 7b0c998fea fix(ui): remove unused root class name from HeaderDefinition
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 20:57:57 +01:00
Charles de Dreuille 84f151c5ee fix(ui): simplify HeaderTop padding-top to always use space-6
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-26 20:52:54 +01:00