Commit Graph

73401 Commits

Author SHA1 Message Date
Eric Peterson 2f6d3ed2f9 Address review feedback
Signed-off-by: Eric Peterson <ericpeterson@spotify.com>
2026-04-24 15:13:58 +02:00
Eric Peterson 774c29f12d Backport new hints from agent skill to human documentation
Signed-off-by: Eric Peterson <ericpeterson@spotify.com>
2026-04-24 14:53:45 +02:00
Eric Peterson 0cf9e2cb3a Add a plugin analytics instrumentation skill to well-known skills
Signed-off-by: Eric Peterson <ericpeterson@spotify.com>
2026-04-24 14:53:21 +02:00
Fredrik Adelöw 8212ff75c5 Merge pull request #34049 from officialasishkumar/devtools/refresh-after-trigger-task 2026-04-24 11:44:42 +02:00
Johan Persson 2da0b663bc Replace useHref with useResolvedPath in useDefinition
useResolvedPath returns the resolved path without the router basename,
eliminating the need for manual basename detection and stripping.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-24 10:27:33 +02:00
Asish Kumar b15ef55be1 devtools: refresh scheduled tasks after trigger or cancel
Closes #32861

Triggering or cancelling a scheduled task from the DevTools Scheduled
Tasks page previously left the table showing the pre-action state, so
users had to refresh the browser (which also reset the plugin selector)
to see the new status.

Switch `useScheduledTasks` to `useAsyncRetry` so it exposes a `refresh`
function, and call it after each trigger/cancel action in
`ScheduledTasksContent`. The refresh happens in a `finally` block so the
table also updates when the action itself fails, reflecting whatever the
backend ended up recording.

Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>
2026-04-24 02:47:49 +05:30
Marat Dyatko 6b171fa5f1 Merge pull request #34041 from dyatko/fix/self-package-imports
Fix circular self-imports and add no-self-package-imports lint rule
2026-04-23 20:28:26 +02:00
Patrik Oldsberg 9d7ffe5200 Merge pull request #34045 from backstage/rugvip/limit-remix-icon-version
deps: limit @remixicon/react to < 4.9.0
2026-04-23 18:55:00 +02:00
Patrik Oldsberg f635139ebc Limit @remixicon/react to versions below 4.9.0
The license changed in 4.9.0, so we need to cap the allowed version
range across all packages that depend on it.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-23 16:42:38 +02:00
Marat Dyatko f1e26b8ed7 Address review feedback on no-self-package-imports rule
- `visitImports` now also reads `exportKind` so `export type { … } from`
  statements are classified as type-only, fixing a false positive in the
  self-import rule (and correctly skipping them in `no-undeclared-imports`
  too).
- The reachability-graph regex in `no-self-package-imports` skips
  `import type` / `export type` edges so files reachable only via
  type-only re-exports aren't pulled into a runtime bundle and no longer
  get false-positive same-entry errors.
- `SOURCE_EXTENSIONS` now includes `.mts` and `.cts` so entries and
  barrels using those extensions are followed correctly.
- The ESLint plugin changeset wording matches the `error` severity of
  the recommended config.
- Adds regression fixtures and RuleTester cases for `export type …` at
  both entries and for a file only reachable via a type-only edge.

Signed-off-by: Marat Dyatko <maratd@spotify.com>
Made-with: Cursor
2026-04-23 16:28:20 +02:00
Johan Persson 1a8de99d1d Add test suite for useDefinition hook in @backstage/ui (#34042)
* Add test infrastructure to @backstage/ui

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Add resolveResponsiveValue tests

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Add useDefinition prop resolution and classes tests

Fixed a bug in useDefinition where passing null for classNameTarget or
utilityTarget was incorrectly defaulted to 'root' due to the nullish
coalescing operator treating null as falsy.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Add useDefinition data attributes tests

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Add resolveDefinitionProps tests

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Add processUtilityProps tests

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Add useDefinition bg system tests

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Add useDefinition utility style and analytics tests

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Add useDefinition href resolution tests

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Add useDefinition options tests

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Wrap all useDefinition tests with BUIProvider

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Fix type errors in useDefinition tests

Use `as const satisfies ComponentConfig<any, any>` instead of
`as ComponentConfig<any, any>` to preserve literal types needed
by the conditional type machinery (DataAttributes, ResolveBgProps,
analytics intersection).

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* Address review feedback in useDefinition tests

- Rename shadowed Wrapper to RouterWrapper in createRouterWrapper
- Fix inaccurate comment about splat vs non-splat routes
- Clarify misleading test name for provider data-bg behavior

Signed-off-by: Johan Persson <johanopersson@gmail.com>

---------

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-23 16:00:09 +02:00
Patrik Oldsberg 564697a8dd Merge pull request #34031 from backstage/rugvip/isolate-invalid-feature-flag-registration
frontend-app-api: isolate invalid feature flag registrations
2026-04-23 15:57:32 +02:00
Patrik Oldsberg 482cc5900a Address review feedback for feature flag isolation
Deduplicate the plugin/module feature flag registration loops and
distinguish the error source (Plugin vs Module). Treat
FEATURE_FLAG_INVALID as a warning in frontend-defaults.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-23 14:47:52 +02:00
Marat Dyatko ab1cdbb9db Fix circular self-imports and add no-self-package-imports lint rule
- Fixes the `Cannot access '_AppRootElementBlueprintesm' before
  initialization` crash in `@backstage/frontend-plugin-api` caused by a
  self-referential import in the packaged ESM.
- Cleans up similar self-imports in `@backstage/catalog-model`,
  `@backstage/core-plugin-api`, `@backstage/plugin-catalog-node`,
  `@backstage/plugin-kubernetes-common`, and
  `@backstage/plugin-kubernetes-node`. Value imports switch to relative
  paths; type-only imports use `import type` so they're erased at
  runtime.
- Adds a new `@backstage/no-self-package-imports` ESLint rule. It reads
  each package's `exports` map, traverses the relative import graph from
  every entry's source file, and only reports imports where the current
  file is in the same bundle as the target entry (same-entry). Files
  that aren't reachable from any entry (tests, scripts, orphans) are
  skipped. `import type`, `package.json` imports, and cross-entry
  self-imports are allowed by default; cross-entry can be opted into
  with `allowCrossEntry: false`.

Signed-off-by: Marat Dyatko <maratd@spotify.com>
Made-with: Cursor
2026-04-23 14:43:01 +02:00
Fredrik Adelöw 427d5219a6 Merge pull request #34035 from backstage/freben/remove-uuid-dependency
Remove uuid dependency in favor of crypto.randomUUID()
2026-04-23 14:19:33 +02:00
Patrik Oldsberg 3009b62ad5 Merge pull request #34025 from etienne-napoleone/patch-2
fix(ui): disable card content scroll shadow on unsuported browsers
2026-04-23 12:53:24 +02:00
Etienne Napoleone 2da5a0af3b docs(changeset): update fix-scroll-card-shadow wording
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Etienne Napoleone <etienne.napoleone@gmail.com>
2026-04-23 11:25:51 +02:00
Fredrik Adelöw e9b78e9698 Remove uuid dependency in favor of crypto.randomUUID()
The uuid package dropped its CommonJS entry point in v14, making it
incompatible with Backstage's CJS build output and Jest test runner.
Rather than working around the ESM-only issue, replace all usage with
the built-in crypto.randomUUID() which has been available in Node.js
since v16.7 and in all major browsers since March 2022.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-23 10:51:43 +02:00
Johan Persson 76635ae005 Rename fix-card-scroll-shadow to fix-card-scroll-shadow.md
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-23 09:52:39 +02:00
Johan Persson 9632e903eb Update .changeset/mean-monkeys-create.md
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-23 09:37:35 +02:00
Deepthi Ajith c4a45bd2f4 Changeset added
Signed-off-by: Deepthi Ajith <deepthi.ajith@infosys.com>
2026-04-23 09:37:35 +02:00
Deepthi Ajith 23ee7899b0 fix(ui): add invalid state styling to Checkbox component
Signed-off-by: Deepthi Ajith <deepthi.ajith@infosys.com>
2026-04-23 09:37:35 +02:00
Patrik Oldsberg b6ca666812 frontend-app-api: isolate invalid feature flag registrations
Wrap each feature flag registration in a try/catch so that a single
invalid flag name (e.g. containing a slash) is reported through the
error collector instead of crashing the entire app at bootstrap.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-23 00:38:05 +02:00
Aramis Sennyey 3b8c0557c6 golden-path: backend plugin persistence guide (#33540)
* docs: backend plugin persistence guide

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

* fix prettier

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

* add dto section

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

* Apply suggestion from @aramissennyeydd

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

* address feedback

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

* test against real scaffolding

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>

* fix knex migrate:make command to specify migrations directory

Without --migrations-directory, knex cannot resolve the config
and errors with "Failed to resolve config file".

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

* address copilot review feedback

- Fix file paths in code snippets to match scaffolded layout (src/ prefix)
- Add missing semicolons in toDatabaseRow/fromDatabaseRow return objects
- Change knex from devDependency to regular dependency for type imports
- Add missing customize-your-instance to adoption sidebar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-22 10:12:51 -04:00
Patrik Oldsberg 1b55701923 Merge pull request #34006 from backstage/rugvip/fix-lockfile-removal-detection
Fix lockfile dependency removal detection in PackageGraph
2026-04-22 15:36:14 +02:00
Etienne Napoleone 6ce1444ca0 chore(changeset): add card scroll shadow fix changeset
Signed-off-by: Etienne Napoleone <etienne.napoleone@gmail.com>
2026-04-22 14:28:42 +02:00
Fredrik Adelöw db3e59cc70 Merge pull request #34004 from backstage/bui-fix-external-links
fix(ui): preserve external hrefs in BUI link components
2026-04-22 14:28:36 +02:00
Etienne Napoleone a0ea7b3152 fix(ui): disable card content scroll shadow on unsuported browsers
bugged in firefox https://caniuse.com/mdn-css_properties_animation-timeline_scroll

Signed-off-by: Etienne Napoleone <etienne.napoleone@gmail.com>
2026-04-22 14:10:02 +02:00
Fredrik Adelöw d0aa11ba64 Merge pull request #34023 from backstage/freben/cleanup-released-patches
chore: remove .patches entries already released in v1.50.2
2026-04-22 10:50:39 +02:00
Fredrik Adelöw f5354dc5ff Merge pull request #34019 from backstage/freben/swappable-notification-description
Make NotificationDescription a swappable component
2026-04-22 10:34:28 +02:00
Fredrik Adelöw 8521de1d46 Merge pull request #33122 from johnmcollier/filterstatustasks
feat(scaffolder): Allow filtering by status in scaffolderService.listTasks
2026-04-22 10:27:36 +02:00
Fredrik Adelöw 504ebe49a0 Update .changeset/gold-friends-end.md
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-04-22 10:27:27 +02:00
Fredrik Adelöw 8a871869fa Merge pull request #34018 from backstage/freben/fix-swappable-components-docs
docs(swappable-components): fix missing backticks and small typos
2026-04-22 09:23:44 +02:00
Fredrik Adelöw df8e8196e0 chore: remove .patches entries already released in v1.50.2
The following patches were included in the v1.50.2 patch release and
no longer need to be tracked:

- pr-33908 (TechDocs sidebar positioning)
- pr-33952 (zod v4 bump)
- pr-33975 (React Aria dependency clamping)
- pr-33984 (tab indicator opacity fix)

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-22 09:13:40 +02:00
Johan Persson 20f0689b29 patches: add entry for #34004
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-22 09:03:40 +02:00
backstage-goalie[bot] 14b50d85ac Merge pull request #34020 from backstage/renovate/npm-dompurify-vulnerability
Update dependency dompurify to v3.4.0 [SECURITY]
2026-04-22 00:13:57 +00:00
Fredrik Adelöw 94c1cf55c7 Use a type-only import for NotificationDescriptionProps
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-21 18:14:54 +02:00
Fredrik Adelöw e2fdc2b61f Merge pull request #33911 from backstage/changeset-release/master
Version Packages (next)
2026-04-21 18:05:23 +02:00
renovate[bot] 4c66f3e96c Update dependency dompurify to v3.4.0 [SECURITY]
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 15:14:31 +00:00
Fredrik Adelöw de9fc68cf1 Document the description prop on NotificationDescription
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-21 17:10:29 +02:00
github-actions[bot] 1cc86bee1c Version Packages (next) 2026-04-21 15:07:43 +00:00
Charles de Dreuille 50a66a9183 Merge pull request #33909 from backstage/cursor/add-date-range-picker
feat(ui): add DateRangePicker component
2026-04-21 15:54:38 +01:00
Fredrik Adelöw 4f7e5219de Load the default NotificationDescription implementation lazily
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-21 16:44:48 +02:00
Fredrik Adelöw 03311e33da Make NotificationDescription a swappable component
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-21 16:35:29 +02:00
Fredrik Adelöw 8c8199cdf9 Update docs/frontend-system/building-plugins/06-swappable-components.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-04-21 16:29:15 +02:00
Fredrik Adelöw ffb749e4b6 docs(swappable-components): fix missing backticks and small typos
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-04-21 16:21:03 +02:00
Patrik Oldsberg 957be583cd Merge pull request #34017 from drodil/home_fix_patch
chore: add patch file for #33721
2026-04-21 11:56:07 +02:00
Hellgren Heikki 81f8d5f7de chore: add patch file for #33721
Signed-off-by: Hellgren Heikki <heikki.hellgren@op.fi>
2026-04-21 12:42:00 +03:00
Fredrik Adelöw e5e7700c7b Merge pull request #34001 from backstage/freben/facets-perf
catalog-backend: fix facets endpoint performance regression
2026-04-21 09:59:56 +02:00
Patrik Oldsberg 94e941867b Merge pull request #34011 from backstage/rugvip/remove-unused-integration-exports
integration: remove unnecessary exports from internal helpers
2026-04-20 19:59:42 +02:00