Merge branch 'master' into master
Signed-off-by: Justin Bryant <justintbry@gmail.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/eslint-plugin': minor
|
||||
---
|
||||
|
||||
Added a new `no-self-package-imports` lint rule, enabled as `error` in the recommended config, that reports when a package imports itself by its own name instead of using a relative path. This pattern causes circular initialization errors in bundled ESM and with `jest.requireActual`.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Added `isPending` prop to Alert, Button, ButtonIcon, Table, and TableRoot as a replacement for the `loading` prop, aligning with React Aria naming conventions. The `loading` prop is now deprecated but still supported as an alias. CSS selectors now use `data-ispending` instead of `data-loading` for styling pending states; `data-loading` is still emitted for backward compatibility but will be removed alongside the `loading` prop.
|
||||
|
||||
**Affected components:** Alert, Button, ButtonIcon, Table, TableRoot
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Added a public `--bui-bg-inherit` CSS variable that resolves to the background
|
||||
color of the nearest enclosing bg provider (`Box`, `Flex`, `Grid`, `Card`,
|
||||
`Accordion`, or any element with a `data-bg` attribute), falling back to
|
||||
`--bui-bg-app`. Use it from CSS for sticky or fixed elements that need to match
|
||||
their surrounding surface without hardcoding a specific level.
|
||||
|
||||
```css
|
||||
.searchBarContainer {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background-color: var(--bui-bg-inherit);
|
||||
}
|
||||
```
|
||||
|
||||
As part of this change, the `data-bg` painting rules previously duplicated in
|
||||
`Box`, `Flex`, `Grid`, `Accordion`, and `Card` have been centralized into a
|
||||
single source in `core.css`. Painting and component behavior are unchanged for
|
||||
all existing usages, with one minor expansion: any element with a `data-bg`
|
||||
attribute (including provider elements and any element that sets it directly)
|
||||
is now painted, not only `Box`/`Flex`/`Grid`/`Card`/`Accordion` elements.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/core-components': patch
|
||||
---
|
||||
|
||||
Added stable DOM markers to the legacy Page and Header so adjacent layout components can coordinate spacing without relying on generated class names.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/create-app': patch
|
||||
---
|
||||
|
||||
Bumped create-app version.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-devtools': patch
|
||||
---
|
||||
|
||||
Scheduled Tasks page now refreshes its table automatically after a task is triggered or cancelled, so the updated status is visible without reloading the browser.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-test-utils': patch
|
||||
---
|
||||
|
||||
Added support for `ExternalRouteRef` in the `mountedRoutes` option of `renderInTestApp` and `renderTestApp`.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Added support for grouping options into sections in the Select component. You can now pass section objects with a `title` and a nested `options` array alongside (or instead of) regular options to render grouped dropdowns with section headers.
|
||||
|
||||
**Affected components:** Select
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-defaults': patch
|
||||
---
|
||||
|
||||
Invalid feature flag declarations are now treated as warnings rather than errors, letting the app load normally.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': minor
|
||||
---
|
||||
|
||||
Updated the `list-scaffolder-tasks` action to support the new "status" filter parameter, allowing the action to return tasks matching a specific status.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Disabled `Card` scroll shadow in browsers that don't support `animation-timeline: scroll()`. Prevents the shadow from being always visible over the `CardBody` when there's nothing to scroll or the body is not scrolled.
|
||||
|
||||
**Affected components:** Card
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Fixed `CardBody` showing an unwanted scrollbar when constrained below the scroll shadow height.
|
||||
|
||||
**Affected components:** Card
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
'@backstage/frontend-plugin-api': patch
|
||||
'@backstage/catalog-model': patch
|
||||
'@backstage/core-plugin-api': patch
|
||||
'@backstage/plugin-catalog-node': patch
|
||||
'@backstage/plugin-kubernetes-common': patch
|
||||
'@backstage/plugin-kubernetes-node': patch
|
||||
---
|
||||
|
||||
Removed a handful of internal imports that referenced the package by its own name. Value imports were switched to relative paths, and type-only imports to `import type`. These self-referential imports could trigger circular initialization errors in bundled ESM and when the package was loaded via `jest.requireActual` — most visibly `Cannot access '_AppRootElementBlueprintesm' before initialization` from `@backstage/frontend-plugin-api`. There are no user-facing API changes.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Fixed a performance regression in the `/entity-facets` endpoint when filters or permission conditions are applied, by routing the EXISTS-based filter through `final_entities` instead of correlating against the much larger `search` table.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/cli-node': patch
|
||||
---
|
||||
|
||||
Fixed a bug in `PackageGraph.listChangedPackages` where removed dependencies were not detected during lockfile analysis. The dependency graph from the previous lockfile was not being merged, causing transitive dependency removals to be missed.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-defaults': patch
|
||||
---
|
||||
|
||||
Fixed scheduler `sleep` firing immediately for durations longer than ~24.8 days, caused by Node.js `setTimeout` overflowing its 32-bit millisecond limit.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-search-backend': patch
|
||||
---
|
||||
|
||||
Added action for search backend to query search engine using the actions registry
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@techdocs/cli': minor
|
||||
---
|
||||
|
||||
Add support for disabling external font downloads via techdocs-cli `techdocs-cli generate --disableExternalFonts`, useful for air-gapped Backstage instances.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': minor
|
||||
---
|
||||
|
||||
Add support for flex item props (`grow`, `shrink`, and `basis`) to `Box`, `Card`, `Grid`, and `Flex` itself.
|
||||
|
||||
**Affected components:** Box, Card, Grid, Flex
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
'@backstage/integration': patch
|
||||
---
|
||||
|
||||
Fixed two issues in the GitLab integration's fetch behavior:
|
||||
|
||||
- The internal fetch wrapper was passing `mode: 'same-origin'` on every request. This had no practical effect server-side, but would have caused cross-origin requests to be rejected when the integration is used from a browser. Requests now use the default fetch mode and work correctly in both browser and Node environments.
|
||||
- When retries are configured, transient network errors (such as dropped connections or DNS hiccups) are now retried using the same `maxRetries` and exponential delay as retryable HTTP status codes. Previously, a thrown fetch error would propagate immediately on the first failure regardless of the retry configuration. Caller-initiated aborts continue to surface immediately without being retried.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
---
|
||||
|
||||
Added optional `status` filter to `ScaffolderService.listTasks`, allowing callers to retrieve tasks matching a specific status.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Added `description`, `tags`, and `metadata` props to the `Header` component. The `description` prop accepts a markdown string with support for inline links. The `tags` prop renders a row of text or link items above the title. The `metadata` prop renders key-value pairs below the description. The `breadcrumbs` prop has been deprecated and will be removed in a future release.
|
||||
|
||||
**Affected components:** Header
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
'@backstage/ui': minor
|
||||
---
|
||||
|
||||
Added a `sticky` prop to the `Header` component. When `true`, the title-and-actions bar stays fixed to the top of its scroll container while the rest of the header (tags, description, metadata) scrolls away. The sticky bar background color automatically matches the container surface using the bg-consumer system.
|
||||
|
||||
**BREAKING**: Removed the main header class from the `Header` component. Custom styles that target this class should be updated to target the component sections that remain.
|
||||
|
||||
**Affected components:** Header
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/frontend-app-api': patch
|
||||
---
|
||||
|
||||
Invalid feature flag declarations no longer crash the app during bootstrap. They are now reported through the error collector and skipped, letting the rest of the app load normally.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-backend': minor
|
||||
'@backstage/plugin-techdocs-node': minor
|
||||
---
|
||||
|
||||
Add support for disabling external font downloads via app-config option `techdocs.generator.mkdocs.disableExternalFonts`, useful for air-gapped Backstage instances.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': minor
|
||||
---
|
||||
|
||||
Added `always()` and `failure()` status check functions for scaffolder steps. These functions can be used in the if field of a step to control execution after failures. `always()` ensures a step runs regardless of previous step outcomes, while `failure()` runs a step only when a previous step has failed.
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
'@backstage/plugin-api-docs': patch
|
||||
'@backstage/plugin-app': patch
|
||||
'@backstage/plugin-app-visualizer': patch
|
||||
'@backstage/plugin-auth': patch
|
||||
'@backstage/plugin-catalog-graph': patch
|
||||
'@backstage/plugin-catalog-import': patch
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
'@backstage/plugin-notifications': patch
|
||||
'@backstage/plugin-org': patch
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
'@backstage/plugin-signals': patch
|
||||
'@backstage/plugin-techdocs': patch
|
||||
---
|
||||
|
||||
Limited `@remixicon/react` dependency to versions below 4.9.0 due to a license change in that release.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Fix `Card href=...` not showing a focus indicator on keyboard navigation. `Link` now composes `useFocusRing`, emits `data-focus-visible`, and renders a `--bui-ring` outline when keyboard-focused. The Card's existing focus-ring CSS matches when the trigger is focused.
|
||||
|
||||
_Affected components_: Card, Link
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes-react': patch
|
||||
---
|
||||
|
||||
Added optional clustersCacheTtlMs option to KubernetesBackendClient that caches getClusters() responses for the specified duration, avoiding repeated /clusters requests when multiple proxy calls resolve cluster auth in quick succession.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Added invalid-state styling for Checkbox and corresponding Storybook variants for verification.
|
||||
|
||||
**Affected components:** Checkbox, CheckboxGroup
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-msgraph-incremental': minor
|
||||
---
|
||||
|
||||
Introduces a cursor-based incremental ingestion provider for Microsoft Graph that processes users and groups one page at a time. Unlike `MicrosoftGraphOrgEntityProvider`, this module never holds the full dataset in memory — each burst processes a single page (up to 999 users or 100 groups). The `@odata.nextLink` cursor is persisted so a pod restart resumes from the last completed page rather than starting over.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': patch
|
||||
---
|
||||
|
||||
Simplified the `OwnerEntityColumn` in the task list to rely on `EntityRefLink` and the entity presentation API instead of manually fetching entities from the catalog.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Adjusted PluginHeader spacing and borders so headers with and without tabs align more consistently with surrounding page content, including when paired with page headers.
|
||||
|
||||
**Affected components:** PluginHeader, Header
|
||||
+74
-2
@@ -223,7 +223,79 @@
|
||||
"@backstage/plugin-techdocs-react": "1.3.10",
|
||||
"@backstage/plugin-user-settings": "0.9.2",
|
||||
"@backstage/plugin-user-settings-backend": "0.4.2",
|
||||
"@backstage/plugin-user-settings-common": "0.1.0"
|
||||
"@backstage/plugin-user-settings-common": "0.1.0",
|
||||
"@backstage/plugin-catalog-backend-module-msgraph-incremental": "0.0.0"
|
||||
},
|
||||
"changesets": []
|
||||
"changesets": [
|
||||
"add-missing-transitive-deps",
|
||||
"add-no-self-package-imports-lint-rule",
|
||||
"add-service-unavailable-error-name",
|
||||
"brave-groups-learn",
|
||||
"bui-bg-inherit-css-var",
|
||||
"chubby-candies-cry",
|
||||
"clamp-react-aria-deps",
|
||||
"core-header-marker",
|
||||
"create-app-1777391535",
|
||||
"create-app-1777992972",
|
||||
"deduplicate-joinpaths-routing",
|
||||
"delegate-attach-mock-api-factory",
|
||||
"devtools-refresh-after-scheduled-task-action",
|
||||
"eager-wolves-enjoy",
|
||||
"extension-point-middleware-backend-app-api",
|
||||
"extension-point-middleware-backend-defaults",
|
||||
"fancy-parents-sit",
|
||||
"feature-flag-invalid-warning",
|
||||
"fifty-clubs-play",
|
||||
"fix-alter-target-nullability",
|
||||
"fix-card-scroll-shadow",
|
||||
"fix-cardbody-min-height",
|
||||
"fix-circular-self-imports",
|
||||
"fix-dialog-dark-theme-selector",
|
||||
"fix-embedded-postgres-config-paths",
|
||||
"fix-facets-perf-regression",
|
||||
"fix-implicit-any-renderInTestApp",
|
||||
"fix-lockfile-removal-detection",
|
||||
"fix-scheduler-sleep-overflow",
|
||||
"fix-tabs-active-indicator-disappearing",
|
||||
"fix-widget-resize-after-edit",
|
||||
"fluffy-brooms-sniff",
|
||||
"free-ways-flow",
|
||||
"funny-animals-prove",
|
||||
"funny-areas-rescue",
|
||||
"gitlab-integration-fetch-fixes",
|
||||
"gold-drinks-poke",
|
||||
"gold-friends-end",
|
||||
"header-improvements",
|
||||
"header-sticky-prop",
|
||||
"isolate-invalid-feature-flags",
|
||||
"kind-files-press",
|
||||
"lazy-rings-end",
|
||||
"limit-remix-icon-version",
|
||||
"link-focus-visible",
|
||||
"mean-monkeys-create",
|
||||
"move-registermswtesthooks-to-test-utils",
|
||||
"msgraph-incremental-initial",
|
||||
"owner-column-cleanup",
|
||||
"plugin-header-spacing",
|
||||
"preserve-external-hrefs-useDefinition",
|
||||
"purple-insects-cross",
|
||||
"remove-duplicate-deps",
|
||||
"remove-portable-schema-deprecated-prop",
|
||||
"remove-unused-deps",
|
||||
"remove-unused-getgithubintegrationconfig",
|
||||
"remove-uuid-dependency",
|
||||
"replace-duplicate-error-utilities",
|
||||
"shy-ways-lay",
|
||||
"slack-scope-message-updates",
|
||||
"swappable-notification-description",
|
||||
"tough-pots-dream",
|
||||
"ui-date-range-picker",
|
||||
"unprocessed-entities-read-auth-check",
|
||||
"unprocessed-entities-read-permission",
|
||||
"upgrade-module-federation-v2",
|
||||
"usetable-complete-debounce",
|
||||
"whole-bees-wave",
|
||||
"zod-v3-config-schema-docs",
|
||||
"zod-v4-dep-bump"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Fixed external URLs in BUI link components being rewritten as in-app paths when the app is served under a non-root base path. Absolute URLs (`http://`, `https://`, `//`, `mailto:`, `tel:`) are now passed through unchanged. Internal `href` values are resolved against the current `basename` exactly once, which also fixes a latent issue where internal link clicks under a non-root base path could navigate to a URL with the `basename` prefix doubled.
|
||||
|
||||
**Affected components:** ButtonLink, Card, Link, Menu, Tab, Table, Tag
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-devtools': patch
|
||||
---
|
||||
|
||||
Migrated `ConfigContent` component from Material UI to Backstage UI (BUI).
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
'@backstage/backend-defaults': patch
|
||||
'@backstage/backend-test-utils': patch
|
||||
'@backstage/cli-module-new': patch
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
'@backstage/plugin-auth-backend-module-cloudflare-access-provider': patch
|
||||
'@backstage/plugin-auth-node': patch
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
'@backstage/plugin-catalog-backend-module-aws': patch
|
||||
'@backstage/plugin-catalog-backend-module-azure': patch
|
||||
'@backstage/plugin-catalog-backend-module-backstage-openapi': patch
|
||||
'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
|
||||
'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
|
||||
'@backstage/plugin-catalog-backend-module-gerrit': patch
|
||||
'@backstage/plugin-catalog-backend-module-gitea': patch
|
||||
'@backstage/plugin-catalog-backend-module-github': patch
|
||||
'@backstage/plugin-catalog-backend-module-gitlab': patch
|
||||
'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
|
||||
'@backstage/plugin-catalog-backend-module-ldap': patch
|
||||
'@backstage/plugin-catalog-backend-module-msgraph': patch
|
||||
'@backstage/plugin-catalog-backend-module-puppetdb': patch
|
||||
'@backstage/plugin-notifications-backend': patch
|
||||
'@backstage/plugin-permission-common': patch
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
'@backstage/plugin-search-backend-module-elasticsearch': patch
|
||||
'@backstage/plugin-search-backend-module-pg': patch
|
||||
'@backstage/plugin-search-backend-node': patch
|
||||
'@backstage/plugin-search-react': patch
|
||||
'@backstage/plugin-signals': patch
|
||||
'@backstage/plugin-signals-backend': patch
|
||||
---
|
||||
|
||||
Removed the `uuid` dependency and replaced usage with the built-in `crypto.randomUUID()`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-notifications': patch
|
||||
---
|
||||
|
||||
The notification description used in the notifications table is now a swappable component, so that apps can replace its rendering with a custom implementation.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-techdocs-node': patch
|
||||
---
|
||||
|
||||
Fixed bug causing `--legacyCopyReadmeMdToIndexMd` option to fail if docs directory is not present
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Added new `DateRangePicker` component — combines two date fields and a calendar popover for selecting a date range, built on React Aria with full keyboard and screen reader accessibility. Uses BUI design tokens throughout, including auto-incremented backgrounds via the bg consumer pattern.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend-module-unprocessed': patch
|
||||
---
|
||||
|
||||
Added permission authorization checks to the unprocessed entities read endpoints for pending and failed entities.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-unprocessed-entities-common': patch
|
||||
---
|
||||
|
||||
Added `unprocessedEntitiesReadPermission` for authorizing read access to unprocessed entity endpoints.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Added `searchDebounceMs` and `filterDebounceMs` options to `useTable` in `complete` mode. Both default to `0` (no debounce, no observable change for existing consumers); set them to defer the client-side filter/search/sort pipeline on large datasets without reimplementing input-layer debouncing. The controlled `search` / `onSearchChange` and `filter` / `onFilterChange` callbacks continue to fire on every change.
|
||||
|
||||
**Affected components:** Table
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
'@backstage/plugin-auth-backend': patch
|
||||
'@backstage/plugin-auth': patch
|
||||
---
|
||||
|
||||
Improved the OAuth consent dialog for MCP authorization by showing more client details, including the client metadata host for CIMD clients, the metadata URL, callback URL, and requested scopes.
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
'@backstage/ui': patch
|
||||
---
|
||||
|
||||
Added a new `Combobox` component. It pairs a text input with a filterable dropdown of options and supports single selection, sectioned options, icons, sizes, and custom typed values via `allowsCustomValue`.
|
||||
|
||||
**Affected components:** Combobox
|
||||
Reference in New Issue
Block a user