Directus v12.0.0stable Released Jun 10, 2026
โš ๏ธ Breaking Change Impact Score: 7/10

Directus v12.0.0 โ€” Release Notes & Engineering Impact

Source available โ€” automated, not human-reviewed

Component: directus ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Breaking-change evidence from the source

  • 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.
  • - Breaking Change: Relicensed from BUSL-1.1 to MSCL-1.0-GPL (Monospace Sustainable Core License, Version 1.0).
  • - 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
  • - 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.
  • - **Breaking change โ€” new behavior for versioned collections** Published items in versioned collections are now locked. Edits must be made through the draft version.
  • - 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.
Read the original context โ†—
Source flags breaking changes โ€” review applicability
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Directus v12.0.0. Source highlight: **License Enforcement**

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

โš ๏ธ Breaking Changes & Deprecations (8)

  • 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.
  • - Breaking Change: Relicensed from BUSL-1.1 to MSCL-1.0-GPL (Monospace Sustainable Core License, Version 1.0).
  • - 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
  • - 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.
  • - **Breaking change โ€” new behavior for versioned collections** Published items in versioned collections are now locked. Edits must be made through the draft version.
  • - 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.

โœจ New Features & Capabilities (6)

  • Locked published items in versioned collections from editing and added a header action button to edit in the draft version @alvarosabu (#27397 by @formfcw)
  • Introduced VERSION_KEY_* constants and renamed main to published @alvarosabu (#27397 by @formfcw)
  • Added auto-save for version editing @alvarosabu (#27449 by @alvarosabu)
  • Added split-menu slot to v-button and migrate primary header actions @formfcw (#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 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 by @formfcw)

๐Ÿ”ง Bug Fixes & Patches (6)

  • Fixed health check results not being shared in multi-instance settings. Restricted `/server/health` to authenticated users (#27160 by @ComfortablyCoding)
  • Fixed the outdated `updateExtension` command and added missing `deleteExtension` and extension registry commands (#27314 by @kheiner)
  • Fixed Image Editor save button to use split button @HZooly (#27437 by @formfcw)
  • Fixed health check results not being shared in multi-instance settings. Restricted `/server/health` to authenticated users (#27160 by @ComfortablyCoding)
  • Added `DIRECTUS_DOMAIN` constant and replaced hardcoded `directus.io` to `directus.com` using the new constant (#27417 by @ComfortablyCoding)
  • Consolidated URLs and emails into shared constants (#27641 by @HZooly)
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
**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/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `[email protected]` - `[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]`