v12.0.0

hashicorp/vaultv12.0.0Jun 10, 2026by github-actions[bot]

AI Summary

Major version release introducing license enforcement, significant UI/UX changes, and configuration hardening.

Key Highlights

  • License enforcement with grace period for Core tier features
  • SSO and custom LLMs disabled without valid license
  • IP_TRUST_PROXY default changed to false

Breaking Changes

  • SSO login disabled without license
  • Custom permission rules ignored
  • Custom/self-hosted LLMs disabled
  • IP_TRUST_PROXY default changed (must set true if behind proxy)
  • Published items in versioned collections are locked

New Features

  • New 'shell' theming scope
  • VERSION_KEY_* constants and published version query
  • Health check improvements and restricted endpoints
  • Removed extra confirmation step from publish flow

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`