Commit Graph

73685 Commits

Author SHA1 Message Date
Fredrik Adelöw 673587dd4f Add patch release file for PR #34001
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-20 14:03:19 +02:00
Fredrik Adelöw cf195de72c catalog-backend: fix facets endpoint performance regression
Route the EXISTS-based filters through final_entities (one row per
entity) instead of correlating against the search table directly.
This avoids the pathological case where correlated subqueries scan
the much larger search table for every row in the outer facets query.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-20 14:02:02 +02:00
Charles de Dreuille c0817115e8 chore: update API reports to match master
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-20 10:38:44 +01:00
MT Lewis 7192e84cad Merge pull request #33948 from backstage/flex-item-props
ui: add support for flex-item props to generic layout components
2026-04-20 09:54:14 +01:00
Fredrik Adelöw e6f30e028a Merge pull request #33993 from backstage/freben/fix-scheduler-sleep
fix(scheduler): handle setTimeout overflow for long sleep durations
2026-04-20 09:47:11 +02:00
Fredrik Adelöw 1688bdc19d Merge pull request #33996 from backstage/freben/owner-column-cleanup
Simplify OwnerEntityColumn to use EntityRefLink directly
2026-04-20 09:46:34 +02:00
Andre Wanlin 60d785e5c9 Edits
Signed-off-by: Andre Wanlin <awanlin@spotify.com>
2026-04-19 15:25:15 -05:00
Charles de Dreuille 4e932ef781 chore(ui): regenerate API report
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 19:51:53 +01:00
Charles de Dreuille 039751e3f7 chore: fix prettier formatting in header page.mdx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 19:48:46 +01:00
Charles de Dreuille 9a5a3274cc chore: update lockfile after adding react-markdown dependency
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 11:44:11 +02:00
Charles de Dreuille 6310790556 feat(ui): add href support to HeaderMetadataUsers, remove bold from description, full-width header
- Add `href` to `HeaderMetadataUser`: avatar becomes a link and name renders as a primary `Link` with `standalone` (no underline at rest)
- Add `WithMetadataUsersNoLinks` story alongside `WithMetadataUsers` to cover both link and non-link variants
- Remove `strong`/`em` from ReactMarkdown `allowedElements` in Header description — only plain text and inline links are now supported
- Replace `<Container>` root with a plain `<div>` so the Header spans its full parent width
- Add `HeaderMetadataStatus` component and CSS (new files)
- Update docs: fixtures, snippets, props-definition, and page.mdx to reflect all changes

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 11:41:55 +02:00
Charles de Dreuille 0e8edce069 feat(ui): add HeaderMetadataUsers component and polish Header metadata/tags
- Add HeaderMetadataUsers component: single user shows avatar + name,
  multiple users show avatar stack with tooltip on hover
- Use Pressable from react-aria for tooltip trigger compatibility
- Switch tags and metadata text to body-medium variant
- Fix metadata item styling: secondary color label, no bold, no colon,
  flex row with gap-2 between label and value
- Update Header gap to space-3
- Update docs with HeaderMetadataUsers example, correct prop types,
  and synced default snippet

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 10:48:09 +02:00
Charles de Dreuille fcc8c4d328 fix(ui): set Header gap to space-3
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 10:05:43 +02:00
Charles de Dreuille 6ba1167cb0 fix(ui): increase Header gap from space-1 to space-4
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 10:05:31 +02:00
Charles de Dreuille 2b97fc41bb docs(ui): simplify Header main example by removing metadata
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 10:04:35 +02:00
Charles de Dreuille 33ea7fb301 docs(ui): update Header docs with tags, description, and metadata props
Add new props to the Header API reference and examples on ui.backstage.io.
Also adds deprecated badge support to the shared PropsTable component so
the breadcrumbs prop is visually marked as deprecated.

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 09:54:19 +02:00
Charles de Dreuille c96e2b3445 feat(ui): add description, tags, and metadata props to Header
Add three new props to the Header component:
- `tags`: renders a row of text/link items above the title, separated by
  3×3px circle dividers
- `description`: renders a markdown string below the title with inline
  link support via react-markdown
- `metadata`: renders key-value pairs below the description with 20px gaps

Also deprecates the `breadcrumbs` prop for future removal.

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 09:48:56 +02:00
Charles de Dreuille 3e9f20340a fix(ui): improve DateRangePicker accessibility and fix docs link
- Add aria-label="Open calendar" and aria-hidden on icon for the calendar trigger button
- Add aria-hidden on nav button icons (React Aria provides built-in labels for prev/next slots)
- Update React Aria docs link to react-aria.adobe.com format

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 07:36:48 +02:00
Charles de Dreuille dc17c01a53 Update page.mdx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-19 07:33:10 +02:00
Charles de Dreuille d676565abb fix(ui): refine DateRangePicker calendar button styling
- Fixed size: 1.5rem (small), 2rem (medium) in rem units
- No padding, flex-centered icon
- Inset focus ring using 1px box-shadow with --bui-ring token
- Border radius bumped to radius-2
- Medium size padding-inline-end reduced to space-1

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 06:59:06 +02:00
Charles de Dreuille b6d52bdb7d chore: dedupe yarn.lock
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 06:45:32 +02:00
Charles de Dreuille f221068ab9 fix(ui): use BUI Popover and add unavailable dates story in DateRangePicker
- Switch DateRangePicker to use the BUI Popover component (with hideArrow)
  instead of the raw react-aria-components Popover
- Add WithUnavailableDates story showing isDateUnavailable with weekends
  blocked and non-contiguous ranges disallowed (default behaviour)

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 06:38:47 +02:00
Charles de Dreuille ff68a57b14 Update report.api.md
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-19 06:38:21 +02:00
Charles de Dreuille 20a5de0605 Fix styles
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-04-19 06:38:21 +02:00
Charles de Dreuille 401916d55b feat(ui): add DateRangePicker component
Adds a new DateRangePicker component to @backstage/ui built on React Aria,
featuring a custom field group with two DateInput fields and a calendar
trigger, a RangeCalendar popover with proper range selection visuals
(solid circles for start/end, transparent solid fill for in-range cells
with row-boundary rounding), and full BUI token usage including bg
consumer auto-increment. Includes Storybook stories and a docs-ui page.

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-04-19 06:38:19 +02:00
Fredrik Adelöw 83ac69be86 Fix ListTaskPage test to match simplified OwnerEntityColumn
Update assertions to expect the entity presentation short ref (e.g.
'foo') instead of the old catalog-resolved display name (e.g.
'BackUser'), and remove now-unused entity fixtures and catalog API
mocking.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-18 22:50:30 +02:00
Fredrik Adelöw 415e30b489 Add changeset
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-18 22:33:41 +02:00
Fredrik Adelöw 8341f98940 Simplify OwnerEntityColumn to use EntityRefLink directly
Remove the catalog API lookup and manual title resolution. The
EntityRefLink already uses the entity presentation API to resolve
display names, so the component only needs the entity ref string.

This removes unused imports of useApi, useAsync, catalogApiRef,
parseEntityRef, and UserEntity.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-18 22:32:54 +02:00
Fredrik Adelöw 89d324840c fix(scheduler): handle setTimeout overflow for long sleep durations
Node.js setTimeout uses a 32-bit signed integer for the delay, so
values larger than 2^31-1 ms (~24.8 days) cause the callback to fire
immediately. Fix by chunking the wait into segments of at most 2^30 ms.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-18 15:30:07 +02:00
Justin Bryant 80c5481a44 fix: run prettier
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 18:02:53 -04:00
Justin Bryant 575b7cca3f Merge branch 'master' of github.com:jtbry/backstage 2026-04-17 17:44:50 -04:00
Justin Bryant ac64f0ad04 fix(SecureTemplater): implement PR suggestions
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:44:35 -04:00
Justin Bryant f32100a977 Update plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:43:38 -04:00
Justin Bryant 6d6c7f64a6 Update plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:43:25 -04:00
Justin Bryant 191ea13578 Update plugins/scaffolder-backend/src/lib/templating/SecureTemplater.test.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:43:07 -04:00
Justin Bryant ff13613d32 Merge branch 'master' of github.com:backstage/backstage
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:32:16 -04:00
Justin Bryant 6a73fff696 fix(SecureTemplater): implement PR suggestions
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:26:10 -04:00
Justin Bryant f063176143 Update plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/templateFileActionHandler.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:26:10 -04:00
Justin Bryant b7da1160fb Update plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:26:10 -04:00
Justin Bryant c78b3b68f6 chore: add changeset
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:26:10 -04:00
Justin Bryant 4fb8469d37 fix(SecureTemplater): return dispose function to clean up secure templater isolate vm & context
Signed-off-by: Justin Bryant <justintbry@gmail.com>
2026-04-17 17:26:10 -04:00
MT Lewis 0912de3a25 ui: transform number to px in basis utility prop
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-04-17 17:52:23 +01:00
MT Lewis 68d1725113 ui: style overrides take higher precedence than utility styles in Box
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-04-17 17:47:46 +01:00
MT Lewis ea220e9a9d ui: document FlexItemProps
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-04-17 17:47:29 +01:00
MT Lewis 62cc936894 ui: fix organization of .changeset/funny-areas-rescue.md
Co-authored-by: Johan Persson <johanopersson@gmail.com>
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-04-17 17:46:04 +01:00
Johan Persson c3ca20c864 patches: add entry for #33984
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-17 14:18:22 +02:00
Johan Persson c6fc76f532 fix(ui): prevent hidden Tabs tree from stomping active indicator opacity
React Aria's `CollectionBuilder` renders `TabList`'s children into both a
hidden collection-building tree and the real DOM. The hidden instance of
`TabsIndicators` sits outside the `TabListStateContext` provider, so its
`state` is `null` — causing its `updateCSSVariables` effect to hit the
`else` branch and write `--active-tab-opacity: 0` to the `tabsRef` DOM
element that the real instance also writes to. Under the right render
ordering, this hidden write lands after the real instance's `opacity: 1`
and makes the active indicator disappear on uncontrolled Tabs.

Guard `updateCSSVariables` with an early return when `state == null` so
the hidden instance never writes to the shared DOM element.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-17 14:18:22 +02:00
Patrik Oldsberg 64b186f465 Merge pull request #33962 from backstage/rugvip/remove-unused-getgithubintegrationconfig
catalog-import: 🧹
2026-04-17 13:07:27 +02:00
Patrik Oldsberg 4247ab84e1 Merge pull request #33961 from backstage/remove-unused-task-settings-v1
backend-defaults: 🧹
2026-04-17 13:07:16 +02:00
Patrik Oldsberg 49401e530a Merge pull request #33960 from backstage/rugvip/remove-unused-signin-type-aliases
core-components: remove unused onSignInFailure and onSignInStarted type aliases
2026-04-17 13:07:07 +02:00