19202 Commits

Author SHA1 Message Date
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
Patrik Oldsberg 461d4fc48b Clean up parse output and schema enumerability
Skip assigning undefined keys for absent optional fields in parse,
matching the previous zod-object behavior. Make the schema getter
non-enumerable so JSON.stringify on the portable schema only
serializes parse and _fields.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 15:09:02 +02:00
Patrik Oldsberg fe8473b5f1 Fix review feedback: override warnings and search docs
Add explicit deprecation warnings in override and makeWithOverrides when
config.schema is used, since the merged result now passes through
configSchema. Update search declarative-integration docs to use
SearchResultListItemBlueprint instead of the removed extension creator.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 13:58:38 +02:00
Patrik Oldsberg 27bc970c91 Fix review feedback: override warning, input guard, required tests
Pass merged config schemas via configSchema instead of config.schema in
the override method to avoid false deprecation warnings. Add type guard
for non-object inputs in parse. Add tests for defaulted field required
semantics (already correct) and invalid input types.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 13:16:25 +02:00
Patrik Oldsberg 8330f1319a frontend-plugin-api: restore @ignore on internal utility types
Route createExtension overloads through CreateExtensionOptions so that
ResolvedExtensionInputs, VerifyExtensionFactoryOutput, VerifyExtensionAttachTo,
and RequiredExtensionIds can remain @ignore without ae-forgotten-export warnings.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 12:52:59 +02:00
Patrik Oldsberg effa7bf459 Fix missing changesets and tsc errors from CI
Add changesets for plugin-app and plugin-catalog-graph. Fix cross-style
merge test to use direct schema values with configSchema instead of
factory functions.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 12:26:25 +02:00
Patrik Oldsberg 540a03171c Add missing changeset and test coverage for PR review gaps
Add changeset for catalog-react blueprint migration. Add tests for
cross-style config merge (configSchema + deprecated config.schema),
deprecation warning emission, and empty configSchema edge case.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 11:28:38 +02:00
Patrik Oldsberg 2d89e198bd frontend-plugin-api: remove deprecated createSchemaFromZod
The helper is no longer used internally and has been replaced by
the `configSchema` option with direct Standard Schema values.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 11:18:03 +02:00
Patrik Oldsberg 1e6d2e91ad frontend-plugin-api: thorough error message tests for portable schema
Cover zod v3, zod v4, mixed, and merged schema error messages
with exact string assertions to document the error format produced
for missing fields, type mismatches, nested paths, and multi-field
errors.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 11:13:27 +02:00
Patrik Oldsberg 1ef7954725 Migrate catalog-react and app blueprints to configSchema
Move EntityCardBlueprint and EntityContentBlueprint to the new
`configSchema` option using zod v3, and AppLanguageApi to zod v4.
Fix config schema merge in `makeWithOverrides` when mixing
`configSchema` and deprecated `config.schema` sources.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 10:39:50 +02:00
Patrik Oldsberg 8bb8560557 frontend-plugin-api: always warn on deprecated config.schema with call site
Instead of a one-time warning, emit a deprecation warning every time
an extension is created using the deprecated `config.schema` option,
including the call site location to help track down each usage.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 10:19:51 +02:00
Patrik Oldsberg 426d1b389f frontend-plugin-api: clean up comments in createPortableSchema
Replace box-style section comments with TSDoc comments to match
the style used throughout the rest of the repository.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 10:17:35 +02:00
Patrik Oldsberg 1f80e1a5a4 frontend-plugin-api: per-field config schema with lazy JSON Schema
Replace the monolithic `createSchemaFromZod` approach with per-field
schema resolution via `createConfigSchema`. Each field is resolved
individually and eagerly validated for JSON Schema conversion support,
but the actual JSON Schema generation is deferred until first access.

`PortableSchema.schema` is now a lazy callable — it can still be
accessed as a property (backward compat, deprecated) or called as a
method returning `{ schema: JsonObject }` for the new API.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 10:13:19 +02:00
Jack Palmer 28a362f2f7 Remove unused type parameter from ExtensionPointFactoryMiddleware
The generic is no longer needed since the interface is opaque. Type
inference is handled by createExtensionPointFactoryMiddleware instead.

Signed-off-by: Jack Palmer <jackpalmer@spotify.com>
2026-04-10 09:03:12 +01:00
Patrik Oldsberg 0d398f3271 frontend-plugin-api: remove ConfigFieldSchema and fix API report warnings
Remove the `ConfigFieldSchema` and `ConfigSchemaRecord` types that are
no longer needed now that `configSchema` and `config.schema` each accept
only one form. The deprecated overloads now constrain directly to the
factory signature `(zImpl: typeof z) => z.ZodType`.

Also fix pre-existing API report warnings by promoting
`ResolvedExtensionInputs`, `RequiredExtensionIds`,
`VerifyExtensionFactoryOutput`, and `VerifyExtensionAttachTo` to
`@public` and exporting them from both entry points.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 09:21:40 +02:00
Patrik Oldsberg 4c7905d22c frontend-plugin-api: add configSchema option and deprecate config.schema
Introduce a new top-level `configSchema` option for `createExtension`,
`createExtensionBlueprint`, `override`, and `makeWithOverrides` that
accepts Standard Schema values directly. The old `config.schema` form
is deprecated via function/method overloads so that the entire call
site gets editor strikethrough when matched.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-10 08:54:43 +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 787200224e frontend-plugin-api: use @standard-schema/spec dependency instead of inlining
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-09 18:45:20 +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
Jack Palmer e782afcb3b Address PR review comments
- Make ExtensionPointFactoryMiddleware an opaque type via new
  @internal/backend package using OpaqueType from @internal/opaque
- Use options object for createExtensionPointFactoryMiddleware
- Make middleware function async (returns Promise<T>)
- Remove extensionPointFactoryMiddleware from createBackend, keep only
  on createSpecializedBackend
- Export defaultServiceFactories from @backstage/backend-defaults

Signed-off-by: Jack Palmer <jackpalmer@spotify.com>
2026-04-09 15:59:44 +01:00
Patrik Oldsberg 23a35d1b91 frontend-plugin-api: widen config schema constraint to accept Standard Schema
Widens the TConfigSchema generic constraint in createExtension,
createExtensionBlueprint, and their override/makeWithOverrides methods
to accept both the existing zod factory form and direct Standard Schema
instances via the new ConfigFieldSchema union type.

Existing consumers are unaffected — the factory form continues to
infer concrete types through z.infer<ReturnType<...>>. Direct Standard
Schema values are accepted but infer as any in the current iteration.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-09 16:36:00 +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
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
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
aramissennyeydd 10cb26a7bd use a set instead and clear the set
Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
2026-04-08 21:06:47 -04:00
Patrik Oldsberg 178f58687d Merge pull request #33802 from davidfestal/fix-bundle-cli-error-in-ci
fix(cli-module-build): ignore MF version warning for secondary entry points
2026-04-09 01:08:23 +02:00
Patrik Oldsberg f1b493f6bd Fix embedded-postgres PID file written before initialization
The PID file was written to the database directory before
`pg.initialise()`, which prevented initialization from succeeding.
Moved the PID file write to just after initialization but before
starting the database.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-08 17:04:36 +02:00
David Festal f52a296a53 fix(cli-module-build): ignore MF version warning for secondary entry points
Signed-off-by: David Festal <dfestal@redhat.com>
2026-04-08 14:01:43 +02:00
Jonathan Roebuck f73876a472 feat(ui): export TableBodySkeleton as public API (#33731)
* feat(ui): export TableBodySkeleton as public API

Export the TableBodySkeleton component so it can be used independently
of the built-in Table component. Relax the column type constraint from
ColumnConfig<T> to { id: string } for compatibility with custom column
types.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>

* fix(ui): use direct index instead of parsing skeleton item ID

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>

* Update .changeset/export-table-body-skeleton.md

Co-authored-by: Johan Persson <johanopersson@gmail.com>
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>

* docs(ui): add TableBodySkeleton to table primitives documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>

---------

Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Johan Persson <johanopersson@gmail.com>
2026-04-08 11:21:17 +02:00
Patrik Oldsberg 7169cd543c exploration: Standard Schema utility for zod version decoupling
Adds a mock/exploration file showing what a central Standard-Schema-based
utility could look like for decoupling the exact zod version from the
public API surface of extension config schemas.

This is not wired into anything — just saving progress on the design
exploration for per-field validation, JSON Schema generation, and
schema merging across different sources (blueprint + override) that
may use different schema libraries or zod versions.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-04-08 11:18:58 +02:00
github-actions[bot] 6c10d88c13 Version Packages (next) 2026-04-07 15:30:58 +00:00
Johan Persson b4a187502b feat(ui): add automatic active tab detection to Header (#33783)
* feat(ui): widen activeTabId type to accept null

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

* feat(ui): add automatic active tab detection to HeaderNav

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

* feat(ui): update Header stories to demonstrate auto-detection and explicit activeTabId

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

* refactor(ui): remove manual useActiveTabId from PluginHeaderAndHeader recipe

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

* docs(ui): update Header docs for activeTabId auto-detection

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

* chore(ui): add API report and changeset for activeTabId auto-detection

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

* fix(ui): resolve relative hrefs in HeaderNav tabs

Add resolveHref to HeaderNavItemDefinition so tab links with relative
hrefs are resolved against the router context before rendering.

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

* chore(ui): add breaking change changeset for HeaderNav resolveHref

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

---------

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-07 17:22:01 +02:00
Fredrik Adelöw a102296f7f Fix CatalogClient test assertion to include entityRef in location objects
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-07 17:16:29 +02:00
Fredrik Adelöw c384fff709 feat(catalog): expose entityRef on Location type and add PUT /locations/:id
- Add `entityRef` field to all Location API responses, carrying the stable
  entity ref (e.g. `location:default/generated-<sha1hex>`) that was
  already persisted to the `location_entity_ref` column.
- Make `entityRef` filterable via `POST /locations/by-query`.
- Add `PUT /locations/:id` endpoint that updates the `type`/`target` of
  an existing location and issues the corresponding delta mutation so the
  catalog entity is updated in-place without changing its entity ref.
- Wire `updateLocation` through `CatalogApi`, `CatalogService`,
  `CatalogClient`, `LocationService`, `LocationStore`, and their
  implementations and mocks.

Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
2026-04-07 16:36:06 +02:00
Patrik Oldsberg 8632502abe Merge pull request #33436 from jonkoops/remove-legacy-proxy-docs
docs: remove legacy corporate proxy documentation
2026-04-07 16:30:05 +02:00
Johan Persson 386972f871 fix(ui): hide Tabs active indicator when no tab matches route
Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-07 15:05:23 +02:00
Fredrik Adelöw 64663ede75 Merge pull request #33773 from koalaty-code/fix-mcp-actions-middleware
fix(backend-defaults): fixes actions registry http middleware conflicts
2026-04-07 13:02:57 +02:00