v12.0.0

EricLBuehler/mistral.rsv12.0.0Jun 10, 2026by github-actions[bot]

AI Summary

A major release introducing license enforcement for the Core tier, changing the default IP trust proxy setting, and refactoring health checks and versioning constants. It includes significant breaking changes regarding UI theming and SSO.

Key Highlights

  • Directus 12 introduces active license enforcement for the Core tier
  • Changed the default of `IP_TRUST_PROXY` from `true` to `false`
  • Fixed health check results not being shared in multi-instance settings
  • Introduced VERSION_KEY_* constants and renamed main to published

Breaking Changes

  • SSO login will no longer work without a valid license
  • Custom permission rules on access policies will be ignored without a license
  • Connections to custom or self-hosted LLMs will no longer work without a license
  • Health check endpoint `/server/health` restricted to authenticated users
  • Deprecated the `VResizeable` component
  • Theme properties removed/renamed (headerShadow, sidebarShadow, navigation.project.*)
  • Publish flow confirmation step removed from the publish flow
  • Status field replaced with boolean 'Archived' in newly created collections

New Features

  • VERSION_KEY_* constants introduced

Full Release Notes

**License Enforcement**

> [!NOTE]
> Directus is free for individuals and organizations under $5M annual revenue and 50 employees.\
> Get your free license key at [directus.com/oig](http://directus.com/oig)

Directus 12 introduces active license enforcement. Self-hosted instances run on the **Core tier** by default. Higher limits and additional features require a valid license. See [Licensing](https://directus.com/docs/licensing/overview) for a complete overview.

This change affects instances previously using features that now require a license, including:

- **SSO** — SSO login will no longer work. Users who authenticate through SSO will be unable to log in and must be converted to email and password users to regain access.
- **Custom permission rules** — custom rules on access policies will be ignored.
- **Custom or self-hosted LLMs** — connections to custom LLMs will no longer work. 
- **AI Translations** — AI-powered translations are not available.

Enforcement is immediate on new instances. Instances upgrading to Directus 12 get a 30-day [grace period](https://directus.com/docs/releases/breaking-changes/version-12#post-upgrade-grace-period) from the time of upgrade, after which these are enforced unless a license that enables them is configured.

If your instance uses any of these features, add a license that includes them to continue to do so. If your instance uses only Core tier features, no action is required.

**Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417))**
- Breaking Change: Relicensed from BUSL-1.1 to MSCL-1.0-GPL (Monospace Sustainable Core License, Version 1.0).

**Changed the default of `IP_TRUST_PROXY` from `true` to `false` to harden the default deployment against IP spoofing. ([#27607](https://github.com/directus/directus/pull/27607))**
- The `IP_TRUST_PROXY` default was changed from `true` to `false`. If you run Directus behind a reverse proxy and rely on `X-Forwarded-For` (or similar) headers for client IP resolution, you must now explicitly set `IP_TRUST_PROXY` to `true` or a more specific trust configuration.

**Fixed health check results not being shared in multi-instance settings. Restricted `/server/health` to authenticated users ([#27160](https://github.com/directus/directus/pull/27160))**
- Health checks are cached by default and shared across multi-instance deployments
  - `/server/health` will return 404 for unauthenticated requests, use `/server/ping` for liveness checks
  - `cache`, `rateLimiter` and `rateLimiterGlobal` health checks have been replaced by a generic `redis` check using the `redis:` prefix

**Introduced VERSION_KEY_* constants and renamed main to published @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397))**
- Backward Compatibility: You can now use `?version=published` to resolve versions of the main item(s) via the version query parameter. For backward compatibility, `?version=main` will continue to work.

**Replaced status field with archived boolean in collection settings @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397))**
- Backward Compatibility: Existing collections with string-based status fields continue to work unchanged; newly created collections now default to a boolean "Archived" field instead of the string "Status" field

**Deprecated the `VResizeable` component @formfcw ([#27437](https://github.com/directus/directus/pull/27437))**
- Deprecation for extensions: The globally registered `VResizeable` component has been deprecated. Extension authors using `<v-resizeable>` should migrate to `@directus/vue-split-panel` or their own implementation.

**Updated type system, borders, and theme variables @formfcw ([#27437](https://github.com/directus/directus/pull/27437))**
- Potential breaking change for theme extensions: headerShadow and sidebarShadow removed from LayoutConfig interface
- Potential breaking change for theme extensions: boxShadow removed from header theme rules schema
- Potential breaking change for theme extensions: sidebarShadow no longer exposed in layout wrapper state

**Updated module navigation bar spacing and styling @HZooly ([#27437](https://github.com/directus/directus/pull/27437))**
- Potential breaking change in theme extensions: Removed `navigation.project.borderColor` / `navigation.project.borderWidth` / `navigation.project.background` from theming. No action is required — these props will simply no longer have any effect.

**Locked published items in versioned collections from editing and added a header action button to edit in the draft version @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397))**
- **Breaking change — new behavior for versioned collections** Published items in versioned collections are now locked. Edits must be made through the draft version.

**Removed rounded buttons and adopted shared header action button across all views @formfcw ([#27437](https://github.com/directus/directus/pull/27437))**
- Potential breaking change for extensions: The `rounded` prop has been removed from `v-button`. Extensions using `rounded` will still render correctly but buttons will appear as rounded rectangles instead of circles. No functional impact.

**Updated header and navigation bar base design and merged their theme properties into a new shell scope @formfcw ([#27437](https://github.com/directus/directus/pull/27437))**
- Potential breaking change for theme extensions: The theme properties `navigation.background`, `navigation.backgroundAccent`, `navigation.borderWidth`, `navigation.borderColor`, `header.background`, `header.borderWidth`, and `header.borderColor` have been removed and replaced by `shell.background`, `shell.backgroundAccent`, `shell.borderWidth`, and `shell.borderColor`.
- Potential breaking change for theme extensions: Custom themes overriding any of these removed properties must migrate to the new `shell` scope. The corresponding CSS variables change from `--theme--navigation--background`, `--theme--navigation--background-accent`, `--theme--navigation--border-*`, `--theme--header--background`, and `--theme--header--border-*` to `--theme--shell--background`, `--theme--shell--background-accent`, and `--theme--shell--border-*`.

**Removed the extra confirmation step from the publish flow @alvarosabu ([#27487](https://github.com/directus/directus/pull/27487))**
- **Breaking change — new publish flow**: Publishing a version no longer shows an additional confirmation dialog after confirming changes in the comparison modal. The item is published directly once the changes are confirmed.

**Updated sidebar styles @formfcw ([#27437](https://github.com/directus/directus/pull/27437))**
- Potential breaking change for theme extensions: Removed `section.toggle.borderWidth` / `section.toggle.borderColor` in favor of section-level border tokens. No action is required — these props will simply no longer have any effect.
- Potential breaking change for theme extensions: Removed `sidebarShadow` and `headerShadow` from `defineLayout()`. No action is required — these props will simply no longer have any effect.

**Refactored focus ring from border/box-shadow to outline @formfcw ([#27437](https://github.com/directus/directus/pull/27437))**
- Potential breaking change for theme extensions: borderColorFocus, boxShadowHover, and boxShadowFocus are removed from the theme schema — custom themes referencing these will lose their focus overrides silently
- Potential breaking change for interface extensions that relied on --theme--form--field--input--border-color-focus or --theme--form--field--input--box-shadow-focus CSS variables will need to migrate to --theme--form--field--input--focus-ring-color

**Updated header bar elements and deprecated the `headline` slot @formfcw ([#27437](https://github.com/directus/directus/pull/27437))**
- Deprecation for extensions: The `headline` slot on the private view header bar has been deprecated. Existing content keeps rendering, but consumers using `<template #headline>` will now see a deprecation hint from Volar.

- **@directus/app**
  - Locked published items in versioned collections from editing and added a header action button to edit in the draft version @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Removed rounded buttons and adopted shared header action button across all views @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
  - Updated header and navigation bar base design and merged their theme properties into a new shell scope @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Removed the extra confirmation step from the publish flow @alvarosabu ([#27487](https://github.com/directus/directus/pull/27487) by @alvarosabu)
- **@directus/api**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
  - Fixed health check results not being shared in multi-instance settings. Restricted `/server/health` to authenticated users ([#27160](https://github.com/directus/directus/pull/27160) by @ComfortablyCoding)
- **@directus/themes**
  - Updated module navigation bar spacing and styling @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated header and navigation bar base design and merged their theme properties into a new shell scope @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated sidebar styles @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Refactored drawer header layout and simplified v-drawer API @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
    
    :::notice
    
    - Deprecation for extensions: The globally registered `v-breadcrumb` component has been deprecated. Extensions using `<v-breadcrumb>` keep rendering but will see a deprecation hint from Volar.
    - Deprecation for extensions: On `v-drawer`, the `subtitle` prop (use the `title` prop instead), the `subtitle` slot, the `header:append` slot, and the `actions:append` slot have been deprecated. Existing usage keeps rendering — `actions:append` content lands in the secondary-actions zone, and for primary CTAs in the drawer header use the new `actions:primary` slot. Consumers will see deprecation hints from Volar.
    - Potential Breaking change for theme extensions: The theme properties `header.headline.foreground` and `header.headline.fontFamily` have been removed. Custom themes overriding these properties should remove them. The corresponding CSS variables `--theme--header--headline--foreground` and `--theme--header--headline--font-family` no longer exist.
    
    :::
- **@directus/types**
  - Updated module navigation bar spacing and styling @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated header and navigation bar base design and merged their theme properties into a new shell scope @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated sidebar styles @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Refactored drawer header layout and simplified v-drawer API @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
    
    :::notice
    
    - Deprecation for extensions: The globally registered `v-breadcrumb` component has been deprecated. Extensions using `<v-breadcrumb>` keep rendering but will see a deprecation hint from Volar.
    - Deprecation for extensions: On `v-drawer`, the `subtitle` prop (use the `title` prop instead), the `subtitle` slot, the `header:append` slot, and the `actions:append` slot have been deprecated. Existing usage keeps rendering — `actions:append` content lands in the secondary-actions zone, and for primary CTAs in the drawer header use the new `actions:primary` slot. Consumers will see deprecation hints from Volar.
    - Potential Breaking change for theme extensions: The theme properties `header.headline.foreground` and `header.headline.fontFamily` have been removed. Custom themes overriding these properties should remove them. The corresponding CSS variables `--theme--header--headline--foreground` and `--theme--header--headline--font-family` no longer exist.
    
    :::
- **@directus/extensions**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/extensions-registry**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/extensions-sdk**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/format-title**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/memory**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/pressure**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/release-notes-generator**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/update-check**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/validation**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/schema**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/schema-builder**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/specs**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/storage**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/storage-driver-cloudinary**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/storage-driver-supabase**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/storage-driver-azure**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/storage-driver-gcs**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/storage-driver-local**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/storage-driver-s3**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/stores**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **create-directus-extension**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **create-directus-project**
  - Changed license to MSCL-1.0-GPL ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
- **@directus/env**
  - Changed the default of `IP_TRUST_PROXY` from `true` to `false` to harden the default deployment against IP spoofing. ([#27607](https://github.com/directus/directus/pull/27607) by @br41nslug)
- **@directus/sdk**
  - Fixed the outdated `updateExtension` command and added missing `deleteExtension` and extension registry commands ([#27314](https://github.com/directus/directus/pull/27314) by @kheiner)
    
    
    ::notice
    - `updateExtension` now accepts an `id` instead of `bundle` and `name`
    :::
  - Refactor sdk error to use class over object ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
    
    :::warning
    Requests that fail will now throw a `RequestError` instead of returning a response with an `error` property.
    :::

### ✨ New Features & Improvements

- **@directus/app**
  - Introduced VERSION_KEY_* constants and renamed main to published @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Added auto-save for version editing @alvarosabu ([#27449](https://github.com/directus/directus/pull/27449) by @alvarosabu)
  - Fixed Image Editor save button to use split button @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Added split-menu slot to v-button and migrate primary header actions @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Added AI-powered translations to the translations interface, including glossary, style guide, and configurable default model settings derived from the enabled providers and allowed models. ([#26940](https://github.com/directus/directus/pull/26940) by @bryantgillespie)
  - Added version support to `getItemRoute` and update all callers to preserve version context when navigating to items from layouts and interfaces @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Added behavior to auto-switch to the draft version on the first edit of published item @alvarosabu ([#27507](https://github.com/directus/directus/pull/27507) by @alvarosabu)
  - Added Publish without Review action to the publish split menu with shortcut @alvarosabu ([#27501](https://github.com/directus/directus/pull/27501) by @alvarosabu)
  - Updated Visual Editor header bar buttons @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated content route middleware to handle singleton collections and draft flow via route guards @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Replaced status field with archived boolean in collection settings @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Updated module bar buttons style @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Deprecated the `VResizeable` component @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated VChip component to appear as a pill in form field label, group accordion, group tabs, kanban, deployment status, extension item, marketplace extension list item, marketplace extension banner, and user popover @formfcw ([#27462](https://github.com/directus/directus/pull/27462) by @formfcw)
  - Added tresjs shader background for public pages @alvarosabu ([#27428](https://github.com/directus/directus/pull/27428) by @alvarosabu)
  - Updated type system, borders, and theme variables @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Rendered non-clickable version menu without directus_versions read access @alvarosabu ([#27461](https://github.com/directus/directus/pull/27461) by @alvarosabu)
  - Added item-less draft creation flow for versioned collections @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Updated module navigation bar spacing and styling @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated Visual Editor popover/modal action buttons @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated UI for the Draft & Publish workflow @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated mobile appearance of drawer sidebar @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Moved Promote/Publish button to header actions @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Updated primary header actions to show label and replace outlined header action buttons @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated SearchInput component to match the new design @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with `MCP_OAUTH_ENABLED=true`. Dynamic and client ID metadata registration were kept separately opt-in with `MCP_OAUTH_DCR_ENABLED=true` and `MCP_OAUTH_CIMD_ENABLED=true`. ([#27069](https://github.com/directus/directus/pull/27069) by @hanneskuettner)
  - Refactored header bar action slots and reorganized CTAs @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
    
    :::notice
    
    - Deprecation for extensions: The `actions:append` slot in the header bar has been deprecated in favor of the new `actions:primary` slot for primary CTAs. Existing `actions:append` usage keeps rendering in the secondary-actions zone, but consumers will now see a deprecation hint from Volar.
    
    :::
  - Added navigation logic on discarding item-less versions @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Put the sidebar into the content area @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated color system for VChip and VersionMenu components @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated content section spacing and drawer content spacing @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Extracted the card subheader into a reusable subheader component @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Added version select to collection page @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Updated sidebar styles @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Renamed "Promote" to "Publish" in version menu and disabled create version and published selection for item-less versions @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Added version query param guards on content-item route @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Improved bookmark flow @formfcw ([#27450](https://github.com/directus/directus/pull/27450) by @formfcw)
  - Forwarded theme tokens and i18n strings from Studio to the visual-editing iframe @formfcw ([#27469](https://github.com/directus/directus/pull/27469) by @formfcw)
  - Refactored focus ring from border/box-shadow to outline @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Introduced VersionChip component @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated theme preview component to match the new design @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated collab avatar indicator design @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Refactored drawer header layout and simplified v-drawer API @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
    
    :::notice
    
    - Deprecation for extensions: The globally registered `v-breadcrumb` component has been deprecated. Extensions using `<v-breadcrumb>` keep rendering but will see a deprecation hint from Volar.
    - Deprecation for extensions: On `v-drawer`, the `subtitle` prop (use the `title` prop instead), the `subtitle` slot, the `header:append` slot, and the `actions:append` slot have been deprecated. Existing usage keeps rendering — `actions:append` content lands in the secondary-actions zone, and for primary CTAs in the drawer header use the new `actions:primary` slot. Consumers will see deprecation hints from Volar.
    - Potential Breaking change for theme extensions: The theme properties `header.headline.foreground` and `header.headline.fontFamily` have been removed. Custom themes overriding these properties should remove them. The corresponding CSS variables `--theme--header--headline--foreground` and `--theme--header--headline--font-family` no longer exist.
    
    :::
  - Updated header bar elements and deprecated the `headline` slot @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Ensured to switch to the draft version when visually editing an item of a versioned collection @formfcw ([#27595](https://github.com/directus/directus/pull/27595) by @formfcw)
  - Extracted reusable ModuleBarButton component @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Moved client-validation to promote version workflow instead of save version @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Added Create New action to publish split menu with shortcut @alvarosabu ([#27425](https://github.com/directus/directus/pull/27425) by @alvarosabu)
- **@directus/api**
  - Introduced VERSION_KEY_* constants and renamed main to published @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Added auto-save for version editing @alvarosabu ([#27449](https://github.com/directus/directus/pull/27449) by @alvarosabu)
  - Added AI-powered translations to the translations interface, including glossary, style guide, and configurable default model settings derived from the enabled providers and allowed models. ([#26940](https://github.com/directus/directus/pull/26940) by @bryantgillespie)
  - Added Publish without Review action to the publish split menu with shortcut @alvarosabu ([#27501](https://github.com/directus/directus/pull/27501) by @alvarosabu)
  - Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with `MCP_OAUTH_ENABLED=true`. Dynamic and client ID metadata registration were kept separately opt-in with `MCP_OAUTH_DCR_ENABLED=true` and `MCP_OAUTH_CIMD_ENABLED=true`. ([#27069](https://github.com/directus/directus/pull/27069) by @hanneskuettner)
  - Added JSON filtering, alias and sorting support ([#26981](https://github.com/directus/directus/pull/26981) by @br41nslug)
  - Added support for item-less versions @Nitwel ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Added support for the `version` query parameter in collections @Nitwel ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Allow disabling the health check endpoint via HEALTHCHECK_ENABLED or selectively disabled checked services via HEALTHCHECK_SERVICES ([#27160](https://github.com/directus/directus/pull/27160) by @ComfortablyCoding)
  - Improved AI assistant prompt caching support across providers. ([#27545](https://github.com/directus/directus/pull/27545) by @bryantgillespie)
- **@directus/constants**
  - Introduced VERSION_KEY_* constants and renamed main to published @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
- **@directus/env**
  - Added auto-save for version editing @alvarosabu ([#27449](https://github.com/directus/directus/pull/27449) by @alvarosabu)
  - Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with `MCP_OAUTH_ENABLED=true`. Dynamic and client ID metadata registration were kept separately opt-in with `MCP_OAUTH_DCR_ENABLED=true` and `MCP_OAUTH_CIMD_ENABLED=true`. ([#27069](https://github.com/directus/directus/pull/27069) by @hanneskuettner)
  - Allow disabling the health check endpoint via HEALTHCHECK_ENABLED or selectively disabled checked services via HEALTHCHECK_SERVICES ([#27160](https://github.com/directus/directus/pull/27160) by @ComfortablyCoding)
- **@directus/system-data**
  - Added auto-save for version editing @alvarosabu ([#27449](https://github.com/directus/directus/pull/27449) by @alvarosabu)
  - Replaced status field with archived boolean in collection settings @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with `MCP_OAUTH_ENABLED=true`. Dynamic and client ID metadata registration were kept separately opt-in with `MCP_OAUTH_DCR_ENABLED=true` and `MCP_OAUTH_CIMD_ENABLED=true`. ([#27069](https://github.com/directus/directus/pull/27069) by @hanneskuettner)
  - Updated `directus_oauth_*` system collection visibility to match other system collections ([#27682](https://github.com/directus/directus/pull/27682) by @hanneskuettner)
- **@directus/types**
  - Added auto-save for version editing @alvarosabu ([#27449](https://github.com/directus/directus/pull/27449) by @alvarosabu)
  - Updated type system, borders, and theme variables @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with `MCP_OAUTH_ENABLED=true`. Dynamic and client ID metadata registration were kept separately opt-in with `MCP_OAUTH_DCR_ENABLED=true` and `MCP_OAUTH_CIMD_ENABLED=true`. ([#27069](https://github.com/directus/directus/pull/27069) by @hanneskuettner)
  - Refactored focus ring from border/box-shadow to outline @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Added support for item-less versions @Nitwel ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Added support for the `version` query parameter in collections @Nitwel ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
  - Fixed health check results not being shared in multi-instance settings. Restricted `/server/health` to authenticated users ([#27160](https://github.com/directus/directus/pull/27160) by @ComfortablyCoding)
- **@directus/errors**
  - Added Publish without Review action to the publish split menu with shortcut @alvarosabu ([#27501](https://github.com/directus/directus/pull/27501) by @alvarosabu)
- **@directus/composables**
  - Updated type system, borders, and theme variables @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Added version select to collection page @alvarosabu ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
- **@directus/themes**
  - Updated type system, borders, and theme variables @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Refactored focus ring from border/box-shadow to outline @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated header bar elements and deprecated the `headline` slot @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
- **@directus/utils**
  - Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with `MCP_OAUTH_ENABLED=true`. Dynamic and client ID metadata registration were kept separately opt-in with `MCP_OAUTH_DCR_ENABLED=true` and `MCP_OAUTH_CIMD_ENABLED=true`. ([#27069](https://github.com/directus/directus/pull/27069) by @hanneskuettner)
- **@directus/sdk**
  - Added JSON filtering, alias and sorting support ([#26981](https://github.com/directus/directus/pull/26981) by @br41nslug)
  - Added support for item-less versions @Nitwel ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
- **@directus/specs**
  - Added support for the `version` query parameter in collections @Nitwel ([#27397](https://github.com/directus/directus/pull/27397) by @formfcw)
- **@directus/visual-editing**
  - Redesigned the editable-element overlay with theming, RTL support and improved a11y @formfcw ([#27469](https://github.com/directus/directus/pull/27469) by @formfcw)
- **@directus/memory**
  - Added TTL support for local KV and cache stores ([#27160](https://github.com/directus/directus/pull/27160) by @ComfortablyCoding)

### 🐛 Bug Fixes & Optimizations

- **@directus/app**
  - Added `DIRECTUS_DOMAIN` constant and replaced hardcoded `directus.io` to `directus.com` using the new constant ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
  - Consolidated URLs and emails into shared constants ([#27641](https://github.com/directus/directus/pull/27641) by @HZooly)
  - Limited mobile sidebar width so the overlay can be tapped to close it @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Bumped `vue-tsc` to 3.1.8 ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Fixed tick rendering when count exceeds display limit in v-slider ([#27644](https://github.com/directus/directus/pull/27644) by @HZooly)
  - Fixed icon alignment in v-divider component @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Fixed v-dialog returning focus to opener instead of an autofocused child on close @formfcw ([#27464](https://github.com/directus/directus/pull/27464) by @formfcw)
  - Fixed flow handle button alignment in flow editor @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Shown "Import in background" checkbox only when a file is selected @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Fixed sidebar reopening at minimum size after being collapsed via drag handle @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Capped datepicker year to prevent invalid date ([#27659](https://github.com/directus/directus/pull/27659) by @HZooly)
  - Bumped Vitest to 3.2.6 ([#27686](https://github.com/directus/directus/pull/27686) by @br41nslug)
  - Fixed `EXTENSIONS_PATH` and `EXTENSIONS_LOCATION` env vars not being respected by the Vite dev server ([#27642](https://github.com/directus/directus/pull/27642) by @HZooly)
  - Added notice on license page with oig link ([#27661](https://github.com/directus/directus/pull/27661) by @robluton)
  - Fixed vue console warnings related to the comparison modal ([#27538](https://github.com/directus/directus/pull/27538) by @formfcw)
  - Fixed bug on tooltip value when decimals is 0 in pie chart panel ([#27356](https://github.com/directus/directus/pull/27356) by @Prateet-Github)
  - Fixed misaligned filter editor in search bar @formfcw ([#27454](https://github.com/directus/directus/pull/27454) by @formfcw)
  - Added missing collection note translations for the `directus_oauth_*` system collections ([#27682](https://github.com/directus/directus/pull/27682) by @hanneskuettner)
  - Changed back button behavior, always navigates one level up @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Fixed default favicon path to resolve against the instance root path instead of the site origin. ([#27095](https://github.com/directus/directus/pull/27095) by @singhvishalkr)
  - Fixed repeater interface ignoring per-field translations and `$t:` keys on sub-field labels, and added a "Field Name Translations" section to the sub-field configuration UI ([#27374](https://github.com/directus/directus/pull/27374) by @khanahmad4527)
  - Fixed search input not trimming whitespace, causing queries with leading or trailing spaces to return no results ([#27359](https://github.com/directus/directus/pull/27359) by @khanahmad4527)
  - Added minor copy change to license onboarding and license key interface ([#27651](https://github.com/directus/directus/pull/27651) by @robluton)
  - Fixed calendar layout toolbar responsiveness @HZooly ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Updated license request links. ([#27652](https://github.com/directus/directus/pull/27652) by @HZooly)
  - Fixed the error handling (try-catch) when saving a field in Directus Studio. ([#27486](https://github.com/directus/directus/pull/27486) by @baguse)
  - Fixed items not being selectable in the collection drawer when the Kanban layout is used while the parent item is opened in a version context @alvarosabu ([#27427](https://github.com/directus/directus/pull/27427) by @alvarosabu)
  - Fixed AI assistant "Clear conversation" not canceling in-flight requests, causing them to continue running in the background ([#27646](https://github.com/directus/directus/pull/27646) by @levgiorg)
  - Added support for translatable flow names via the existing `$t:` prefix and translation strings, matching the field/collection label pattern. The flow name input in the flow editor now exposes the translation picker. ([#27472](https://github.com/directus/directus/pull/27472) by @khanahmad4527)
  - Removed unsupported json filter function from the studio ([#27669](https://github.com/directus/directus/pull/27669) by @sourav-18)
  - Fixed bookmark icon and color not showing in header @formfcw ([#27437](https://github.com/directus/directus/pull/27437) by @formfcw)
  - Fixed UI freeze caused by WYSIWYG interface when its non-editable state toggles @formfcw ([#27515](https://github.com/directus/directus/pull/27515) by @formfcw)
  - Fixed project setup silently ignoring invalid license keys ([#27671](https://github.com/directus/directus/pull/27671) by @ComfortablyCoding)
- **@directus/api**
  - Bumped Vitest to 3.2.6 ([#27686](https://github.com/directus/directus/pull/27686) by @br41nslug)
  - Fixed project setup silently ignoring invalid license keys ([#27671](https://github.com/directus/directus/pull/27671) by @ComfortablyCoding)
  - Fixed nested `deep` query parameters being dropped when filters use dynamic variables ([#27676](https://github.com/directus/directus/pull/27676) by @mazen-salah)
  - Fixed bulk creation of itemless drafts always fails ([#27683](https://github.com/directus/directus/pull/27683) by @ComfortablyCoding)
  - Fixed SSO resolver erroring when admin is not defined ([#27662](https://github.com/directus/directus/pull/27662) by @ComfortablyCoding)
  - Fixed Postgres numeric overflow errors being misattributed to an unrelated field ([#27690](https://github.com/directus/directus/pull/27690) by @MahinAnowar)
  - Fixed registration email verification tokens to use the configured secret fallback when `SECRET` is missing. ([#27406](https://github.com/directus/directus/pull/27406) by @rijkvanzanten)
  - Bumped axios, js-cookie, samlify, systeminformation, simple-git, fast-uri dependencies ([#27589](https://github.com/directus/directus/pull/27589) by @br41nslug)
  - Fixed MCP OAuth dynamic client registration defaults and metadata responses. ([#27628](https://github.com/directus/directus/pull/27628) by @hanneskuettner)
  - Prevented setting a custom user `provider` when not entitled to SSO ([#27675](https://github.com/directus/directus/pull/27675) by @ComfortablyCoding)
  - Fixed aliased relational fields in GraphQL queries, fragments and REST queries ([#27054](https://github.com/directus/directus/pull/27054) by @AlexGaillard)
  - Fixed active seat processing not accounting for user/role changes ([#27662](https://github.com/directus/directus/pull/27662) by @ComfortablyCoding)
  - Removed dead `isMinimumAppPermission` function ([#27662](https://github.com/directus/directus/pull/27662) by @ComfortablyCoding)
  - Fixed failed itemless drafts being dropped from version reads when limit=-1 ([#27578](https://github.com/directus/directus/pull/27578) by @alvarosabu)
  - Added a namespace to shares cache keys ([#27707](https://github.com/directus/directus/pull/27707) by @br41nslug)
  - Updated IP blocking ([#27606](https://github.com/directus/directus/pull/27606) by @br41nslug)
  - Updated the built-in OpenAI and Anthropic AI model lists to use the latest available API models. ([#27602](https://github.com/directus/directus/pull/27602) by @hanneskuettner)
  - Fixed singletons allowing multiple itemless versions ([#27532](https://github.com/directus/directus/pull/27532) by @formfcw)
  - Fixed issue causing duplicate admin roles on first admin creation ([#27663](https://github.com/directus/directus/pull/27663) by @robluton)
  - Fixed non custom permissions denied irrespective of if entitled ([#27662](https://github.com/directus/directus/pull/27662) by @ComfortablyCoding)
- **@directus/constants**
  - Added `DIRECTUS_DOMAIN` constant and replaced hardcoded `directus.io` to `directus.com` using the new constant ([#27417](https://github.com/directus/directus/pull/27417) by @ComfortablyCoding)
  - Consolidated URLs and emails into shared constants ([#27641](https://github.com/directus/directus/pull/27641) by @HZooly)
- **@directus/system-data**
  - Added AI-powered translations to the translations interface, including glossary, style guide, and configurable default model settings derived from the enabled providers and allowed models. ([#26940](https://github.com/directus/directus/pull/26940) by @bryantgillespie)
  - Updated the built-in OpenAI and Anthropic AI model lists to use the latest available API models. ([#27602](https://github.com/directus/directus/pull/27602) by @hanneskuettner)
- **@directus/types**
  - Added AI-powered translations to the translations interface, including glossary, style guide, and configurable default model settings derived from the enabled providers and allowed models. ([#26940](https://github.com/directus/directus/pull/26940) by @bryantgillespie)
  - Added JSON filtering, alias and sorting support ([#26981](https://github.com/directus/directus/pull/26981) by @br41nslug)
- **@directus/utils**
  - Added JSON filtering, alias and sorting support ([#26981](https://github.com/directus/directus/pull/26981) by @br41nslug)
- **@directus/sdk**
  - Fixed health check results not being shared in multi-instance settings. Restricted `/server/health` to authenticated users ([#27160](https://github.com/directus/directus/pull/27160) by @ComfortablyCoding)
  - Fixed `SingletonCollections` incorrectly including core schema collections ([#27196](https://github.com/directus/directus/pull/27196) by @kheiner)
- **@directus/ai**
  - Updated the built-in OpenAI and Anthropic AI model lists to use the latest available API models. ([#27602](https://github.com/directus/directus/pull/27602) by @hanneskuettner)
- **@directus/release-notes-generator**
  - Ignored private workspace packages when generating release notes ([#27637](https://github.com/directus/directus/pull/27637) by @licitdev)

### 📦 Published Versions

- `@directus/app@16.0.0`
- `@directus/api@36.0.0`
- `@directus/ai@1.3.2`
- `@directus/composables@11.5.0`
- `@directus/constants@14.4.0`
- `create-directus-extension@12.0.0`
- `create-directus-project@13.0.0`
- `@directus/env@6.0.0`
- `@directus/errors@2.4.0`
- `@directus/extensions@4.0.0`
- `@directus/extensions-registry@4.0.0`
- `@directus/extensions-sdk@18.0.0`
- `@directus/format-title@13.0.0`
- `@directus/memory@4.0.0`
- `@directus/pressure@4.0.0`
- `@directus/release-notes-generator@3.0.0`
- `@directus/schema@14.0.0`
- `@directus/schema-builder@1.0.0`
- `@directus/specs@14.0.0`
- `@directus/storage@13.0.0`
- `@directus/storage-driver-azure@13.0.0`
- `@directus/storage-driver-cloudinary@13.0.0`
- `@directus/storage-driver-gcs@13.0.0`
- `@directus/storage-driver-local@13.0.0`
- `@directus/storage-driver-s3@13.0.0`
- `@directus/storage-driver-supabase@4.0.0`
- `@directus/stores@3.0.0`
- `@directus/system-data@4.5.0`
- `@directus/themes@2.0.0`
- `@directus/types@16.0.0`
- `@directus/update-check@14.0.0`
- `@directus/utils@13.5.0`
- `@directus/validation@3.0.0`
- `@directus/visual-editing@2.1.0`
- `@directus/sdk@22.0.0`