929 Commits

Author SHA1 Message Date
Florian C. Wachmann
bb7cb8d639 Migrate @directus/visual-editing into the monorepo (#27157)
* move files from directus/visual-editing repo

- exclude tooling such as prettier, eslint, …
- flatten test-website

* docs(visual-editing): update test website readme for monorepo setup

Reflects that the test website now lives inside the Directus monorepo
at packages/visual-editing/test-website, drops the separate-repo clone
step, fixes a few typos, and collapses the multiple example URLs down
to a single versioned entry.

Note: the template URL in the directus-template-cli command still
points at github.com/directus/visual-editing; it will be updated to
the new or updated directus/visual-editing-template repository.

* fix(visual-editing): prevent edit handler firing twice on overlay button clicks

The overlay rect forwarded every click to the edit button, so clicks
that already bubbled up from the edit or AI button triggered the edit
handler a second time. Skip forwarding when the click target is
contained within either button.

* chore(visual-editing): convert package to monorepo workspace conventions

- Point the package repository URL and readme link at the monorepo
  and bump the license copyright year.
- Switch runtime/dev dependencies to the workspace catalog, drop the
  package-local pnpm-lock.yaml, engines, and packageManager fields,
  and add @reach/observe-rect to the root catalog.
- Add explicit return types on the public entry functions to satisfy
  the stricter shared tsconfig.
- Swap vitest from jsdom to happy-dom to match the rest of the repo.

- Review note: Rebuild \`pnpm build\`

* refactor: share visual-editing types between package and studio app

The Studio app used to keep a duplicated copy of EditConfig, SavedData,
and related postMessage types, with a comment instructing maintainers
to keep them in sync with the visual-editing package. Now that both
live in the same repo, expose them from a dedicated @directus/visual-
editing/types subpath and consume them from the app instead.

- Add src/types.ts as the public types entry and update tsdown to emit
  it as a second dual-format build, alongside the main entry.
- Reuse PrimaryKey from @directus/types in the shared type file
  instead of duplicating it locally.
- Declare @directus/visual-editing as a workspace dependency of the
  app and import the shared types from @directus/visual-editing/types
  in the Studio editing layer.

- Review note: Rebuild \`pnpm build\`

* chore(visual-editing): clean up test-website workspace setup

- Relink @directus/visual-editing from link:../../.. to link:.. to
  match the new in-repo location and drop the package-local engines
  and packageManager fields.
- Ignore the generated pnpm-lock.yaml and tell Nuxt to ignore .DS_Store
  so macOS dev runs stay quiet.
- Add an empty pnpm-workspace.yaml with an unimport 6.0.2 override to
  work around the nitropack/@nuxt/nitro-server duplicate-import
  warning so the test-website install stays clean.
- Fix an indentation glitch on @tailwindcss/typography in package.json.

* chore(visual-editing): update stylelint and eslint to ignore test-website files

* set isolatedDeclarations to false in compilerOptions

* lint

* update ignore patterns for test-website files

* rename license

* remove LICENSE

* add license to stylelintignore

* share sameOrigin via @directus/utils/browser

* fix hydration error

* update test-website readme

* add @directus/utils to changeset

---------

Co-authored-by: Rob Luton <rob.luton@gmail.com>
2026-04-22 14:10:12 -04:00
ian
ab1f135e08 Release 11.17.3 (#27132)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-15 14:26:23 -04:00
ian
2218212e43 Release 11.17.2 (#27056)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-06 13:27:57 -04:00
Gerard Lamusse
097e2af8fa feat: add timezone support to datetime display (#26184)
* feat: add timezone support to datetime display

- Add timezone field to datetime display options (timestamp fields only)
- Implement timezone conversion using Intl.DateTimeFormat
- Add timezone selection dropdown with grouped options
- Update formatDate to handle timezone conversion before formatting
- Add translation keys for timezone options
- Fix Intl.DisplayNames error by using Intl.DateTimeFormat for timezone names

* formatted

* Add tooltip to show original

* Display ISO instead

* Support timezones on datetime interfaces

* Refactored and cleanup code

* Fix time interface

* formatting

* fix timezone offset for timezones with greater than 12 hour offset

* allow deselect to allow reverting back to the local timezone

* clean up a few types

* bring in date-fns-tz for formatting to different timezones

* changeset

* update changeset to match pr title

* user friendly datetime tooltip

* cleanup timezone values in dropdown

* tests

* fix test

* add test cases for getTimezoneOptions

---------

Co-authored-by: Rob Luton <rob.luton@gmail.com>
2026-03-31 11:19:53 -04:00
ian
32d5650f4f Release 11.17.1 (#27007)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alex Gaillard <alex@directus.io>
2026-03-30 12:29:03 -04:00
ian
dfb2db349f Release 11.17.0 (#26960)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-24 18:15:34 -04:00
ian
40ec421fdf Release 11.16.1 (#26871)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-10 18:11:36 -04:00
ian
d273af9e3c Release 11.16.0 (#26810)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-04 15:48:22 -05:00
ian
282a6de31f Release 11.15.4 (#26677)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alex Gaillard <alex@directus.io>
2026-02-17 09:43:18 -05:00
ian
f0f0c605e3 Release 11.15.3 (#26663)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-16 09:52:22 -05:00
ian
7f6f6728d7 Release 11.15.2 (#26641)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-12 14:02:25 -05:00
Alvaro Saburido
ec50bbfc37 Replace flatpickr with Reka-ui components (#26502)
* added claude and agentic folders to gitignore

* Replace flatpickr with Reka-ui components

* Abstract date picker types

* Add changeset

* Update lock

* Sign CLA

* Stylelint

* Add test for datepicker formatting

* Add set to now button translation key

* Add vitest ui

* Add v-date-picker tests

* Fix translation key binding in v-date-picker component

* Refactor v-date-picker styles and improve focus outline for selected calendar cells

* Refactor v-date-picker format

* Add mock translation function in v-date-picker tests

* Refactor v-date-picker component to use VInput and VSelect for month and year selection

* Add VSelect and VInput mocks to v-date-picker tests

* Fix timeValue seconds handling in formatDatePickerModelValue function

* Refactor v-date-picker component: remove unused emit event and update calendar value binding

* Refactor v-date-picker component: rename computed property from showTime to hasTime for clarity

* Refactor v-date-picker component: clean up formatting and remove unnecessary line breaks for improved readability

* Add 'close' emit event to v-date-picker component and trigger on date change

* Refactor v-date-picker component: update emit event syntax and improve template binding for model values

* Update reka-ui to 2.8.0

* Update app/src/lang/translations/en-US.yaml

* Update app/src/components/v-date-picker/v-date-picker.vue

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2026-02-10 16:07:39 -05:00
ian
31bdf682e8 Release 11.15.1 (#26603)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-06 14:41:49 -05:00
ian
47c60716b5 Release 11.15.0 (#26590)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-05 14:16:37 -05:00
Nitwel
50b496f0a5 Collaborative Editing Implementation (〃 ̄︶ ̄)人( ̄︶ ̄〃) (#26172)
* Test save action broadcast

* Fix formatting

* fix frontend connecting multiple times

* improve room inactivity logic

* fix client clearing

* fix update before focus

* ignore changes to fields focused by other users

* fix rejoining a room

* fix singleton not rendering HeaderCollab

* make collab work with ai

* don't give out duplicate colors if not necessary.

* fix giving out invalid colors

* update disconnection logic to be instance based instead of client based

* update timings

* Remove unused imports

* Update test to pass client.uid instead

* Fix security of nested payload sanitization

* Use prettier to format

* Fix messenger race condition

* Fix empty keys array invalidation

* Fix mocks

* Add collab and store tests

* reuse verify permissions for sanitize payload

* remove unused code

* fix ai chat working with collab

* fix cleaning clients that are in room but not in messenger

* Fix wildcard access

* Fix nested create without PK

* Cleanup removed fn

* Remove room

* Add missing await

* Patch unit tests

* Merge async deepMapWithSchema and refactor sanitization

* Fix usages and tests

* Fix relational null updates treated as objects

* Prevent unauthorized field unsets and relationship updates

* Propagate item deletion

* Simplify room lifecycle and add recovery

* Update tests

* Implement distributed cleanup and standardize env configuration

* Cleanup and refactor to RoomManager

* Address CodeQL warning

* Add blackbox tests

* Handle integer PK and handle invalid schema

* add error messages to client

* fix error types

* Add basic deep relational tests

* Patch tests and improve websocket transport

* remove unused import

* add frontend delete

* improve error handling and fix item delete

* clearn up room logic

* update tests

* Update blackbox tests

* Use waitForMatchingMessage

* Specify timeout for seeding

* Improve tests

* fix room tests

* fix sanitize-payload and verify-permissions

* update discard banner in app

* Implicitly switch focus when updating

* Try accounting for misordered messages

* clean console

* Fix build

* fmt

* fmt

* fmt

* Verify permissions before relational processing

* Improve update clearing

* Fix double join events

* Fix disconnected icon when disabled

* Handle error from getService

* Pass collab context to overlay

* Broadcast to all users to fix relational item not receiving update

* Skip disabling interfaces with relational specials

* Add shared discard and drawer refinements

* sync item update notification

* fix double save message in frontend

* Add collab for users and files

* fix join error showing on non existent items

* Reset changes when last person leaves

* don't focus on focused fields

* fix headerCollab not showing with coll-template

* Check if values has changed on update

* fix page header hiding collab

* Remove unused imports

* Fix versioned propagation

* Improve copy

* Fix delete handler

* Update collab tests

* fmt

* Update comments

* fix making color tab persistent

* only enable collab if needed

* fix wrong collision on no changes

* Validate changes on join and update

* Update packages/utils/shared/generate-joi.ts

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* Simplify permission tagging and add integration test

* Test color propagation

* Fix rerun constraint

* Optional colors

* cleanup code

* Add namespace config and fix redlock

* update room functions to use global memory

* code cleanup

* Add fields to discard

* Fix messenger mock

* fix m2m and m2a and initialChanges in frontend

* Mock global rooms

* update error types and improve verify permissions

* add version permission check

* Match message instead

* Add missing await for version check

* Ensure consistent error types and patch tests

* Fix lint

* Fix version perms check

* Update mock and errors

* Use fake timers

* Improve collab disabling

* Add leader based room closure

* Optimize distributed messaging and implement non-blocking termination

* Optimize with validateItemAccess

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* Streamline field permissions check

* Fix focus erroring

* Try improve blackbox stability with waitForMatchingMessage

* Improve numeric keys stability

* Fallback to collection perms when sanitizing missing items

* Add tests

* Sanitize encrypt field special

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* Fix double o2m edits not cleared in app

* Reuse util

* Clear relational detailed update syntax

* Unify event sync to distributed bus

* Catch unhandled promise rejections during test cleanup

* Fix M2O null propagation by ensuring correct item context

* Update api/src/websocket/handlers/collab/sanitize-payload.ts

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* Consolidate watchers to resolve double join and race conditions

* Allow metadata propagation in detailed relational updates

* simplify discard message

* early return on empty updateAll message

* improve discard further

* fix tests

* Consolidate and optimize payload validation and sanitization

* fix permission check on discard

* fix collab connecting when it shouldn't

* maybe fix room closure bug

* Polish

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* Check singleton create

* Reconcile M2O objects

* fix orphan clients cleanup

* cleanup and fix code further

* move deep-map-with-schema to shared

* improve logs

* fix leave message

* cleanup singleton check

* remove duplicate perm check

* improve message handler singleton check

* fix self refernced relation disconnects

* fix frontend user name containing null

* fix * in discard

* fix leave counter

* fix race condition on edits being updated before fieldUpdate gets called

* separate ws sdk

* move collab sdk inside use-collab

* remove unused imports

* move collab folder 1 level up

* fix test

* fix headerCollab when formFieldLabel is hidden

* Cleanup discard message in app

* Discard should check read and update perms

* Rename to collaborative editing

* Add to telemetry

* Move getSchema in

* Fix renaming

* use newer sdk functions

* Remove moved files

* fix rejoining rooms

* Optimize discard

* Collab editing design fixes (#26528)

* Update avatar border styling and adjust x-small size in v-avatar component to match title baseline

* Refactor HeaderCollab component to use UserPopover for user avatars

* Remove unused template for HeaderCollab and clean up overlay-item component by deleting the "Avatars" span

* Remove unnecessary blank line in HeaderCollab component styling

* Move HeaderCollab to action slot and self align center

* Add v-avatar border color and width variables

* Add font-size comment for v-avatar in HeaderCollab component

* Update v-avatar border width to use theme variable instead of local variable

* Apply minor styles fixes

* Refactor HeaderCollab component template by repositioning icons and margin rules

* Refactor HeaderCollab slot position in other files

* Enhance form field label styles by adding flex-grow property and adjusting HeaderCollab margin for improved layout

* Remove unnecessary margin styles from header-collab in item and overlay-item components

* format

* Remove unnecessary hide-current and x-small prop from HeaderCollab component

* improve focus handling

* refactor v-avatar component to use a single component tag for clickable and non-clickable states

* fix: adjust sizes in HeaderCollab

* feat: add type prop to HeaderCollab for flexible usage in header and field contexts

* fix: adjust HeaderCollab styling for field context and improve layout in form-field-label

* fix: update HeaderCollab instances to use 'avatars' class for improved styling

* refactor: replace HeaderCollab with CollabAvatars component across multiple files for consistent collaboration user display

* fix eslint

---------

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: formfcw <dev@formfcw.com>

* Rename blackbox for consistency

* Handle empty buffers to prevent errors during race conditions or disconnects

* Optimizations

* Use debug instead of info

* Cleanup on shutdown signal

* Cleanup optimization

* Add test and cleanup

* Ensure sequential bus processing

* Use isRelational util

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Fix import and accept DeepPartial

* Wait for connection

* fix too strict pk check

* Improve bb flakiness

* Unset should not acquire focus

* Test sticky focus behavior

* Update telemetry to include env accuracy

* Use getter for reactivity

* Ensure focus state initialization

* Add composable tests

* Await lock releasing

* Update memory tests

* Update translations

* Add websockets_enabled to telemetry

* Update changesets

* Reduce LRU cache capacity to 2000

* Add missing await

* Fix room cleanup

* Fix non-existent items (null) skipping cache

* Move zod to dependencies in @directus/types

* Update lockfile

* Fmt

* Skip cache metadata calculation if invalidated

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* Add reconnect param

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* make relational disabled on focus again

* only show 1st letter in CollabAvatars

* fix: use collab typescript (#26549)

* Refactor message handling in useCollab composable for type safety

* Enhance type safety in useCollab composable by updating field definitions to use object syntax for nested fields

* Add CollabUserInfo type for user data structure in useCollab composable

* Update TODO links in useCollab to GH issue instead

* Refactor field definitions in useCollab to use dot notation for nested avatar properties and keep types

* Update field definitions in useCollab to utilize DirectusUser

* Revert to object notation

* fix sending leave message on item delete

* Optimize client room lookup to check local node only (#26569)

* Optimize client room lookup to check local node only

* Update test

* Update comment

* Update wording

Co-authored-by: Nitwel <mail@nitwel.de>

---------

Co-authored-by: Nitwel <mail@nitwel.de>

* update unknown user to use icon instead

* code cleanup

* Fix blackbox create policy naming

* undo ai suggestion

* improve jsdoc

* fix jsdoc

* fix again jsdoc

* more fixidixi

* make collab opt in by default

* Update default enabled state to false

* Enable collab for blackbox

* Remove only sequential

* Fix MSSQL default value

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

---------

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>
Co-authored-by: Alvaro Saburido <alvaro.saburido@gmail.com>
Co-authored-by: formfcw <dev@formfcw.com>
Co-authored-by: Alex Gaillard <alex@directus.io>
2026-02-05 12:23:48 -05:00
Bryant Gillespie
8884e25f98 Add multi-provider AI support with Google and OpenAI-compatible providers. Extract shared AI types into new @directus/ai package. (#26481)
* feat: add multi-provider AI support

* refactor: separate ai package

* fixes based on AI review

* Add provider options for open-ai-compatible to support things like reasoning

* formatter

* fix changeset maybe?

* fix copilot feedback

* Apply suggestion from @robluton

Co-authored-by: Rob Luton <rob.luton@gmail.com>

* fix: package version

* fix: reuse existing types

* fix tests

---------

Co-authored-by: Rob Luton <rob.luton@gmail.com>
2026-01-20 17:28:47 -05:00
ian
2cb91fcc6a Release 11.14.1 (#26486)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-14 19:41:14 +02:00
Rijk van Zanten
b9b5d8a67e Use standardized header action button component (#26375)
* Create reusable header bar action button comp

* Use in activity route

* Use in collection

* Use vue router prop type

* Use on files

* Add support for download

* use on file detail

* Add support for active

* Use on dashboard

* Fix typo

* Use on insights overview

* Couple more

* Update flows

* Flows

* Policies

* Presets

* Prestes 2

* Project settings

* Roles

* Role item detail

* Public role

* Sys logs

* Translations

* Translations, users

* User detail

* Drawers

* Action components

* Apply suggestion from @AlexGaillard

* Install test required deps

* Import comps/directives

* Add tests for new comp

* Add changeset

* Run formatter

---------

Co-authored-by: Alex Gaillard <alex@directus.io>
2025-12-15 09:20:14 -05:00
ian
385d56c0cf Release 11.14.0 (#26352)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-09 15:43:44 -05:00
Rijk van Zanten
d8d8a06c18 Add AI Chat sidebar (#26259)
* Install vue split panel

* Recreate private-view

* Persist size

* Setup headerbar

* Add collapse expand

* Add resize handle

* Remove tw cruft

* Hack in right sidebar

* Fix right sidebar expand/collapse

* Fix content spacing

* Tweak scrolling containers, fix header shadow

* Remove margins

* Make nav responsive

* Nav toggles, remove latency

* Finish basic responsiveness

* Bry/split panel tiny twak (#25967)

* really missed the e in that branch name

* all the small thi..buttons

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Style expand button

* Tweak sizing of icons

* Reduce search input sizing

* Remove margin from children

* Tweak header bar layout

* Remove page icons

* Tweak responsive breakpoints

* Add support for icons

* Tweak spacing

* they're back but as props this time (#25987)

* Fix z-index

* Header Bar to V Drawer Header Bar (#25988)

* they're back but as props this time

* rename to v-drawer header

* refactor to match private-view-header-bar pattern

* remove small header and header shadow props on private view

* Drop small prop from v-drawer-header

* Remove primary action item

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Added `directus_comments` and `directus_extensions` to websocket subscriptions (#25464)

* utilize system data for registering system module subscriptions

* add changeset

* update changeset wording

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Nitwel <mail@nitwel.de>

* Speed up dialogs a bit

* Add top padding in collections

* Re-add support for custom header border

* Slow down tooltips

* Responsiveness for header bar

* Recreate lockfile

* Add changeset

* Run formatter

* Fix linter warnings

* Add encryption support to special flags (#26096)

* Warn on secret values shorter than 32 bytes

* Warn on byte instead of string length

* Add encrypt/decrypt logic

* Add encrypt special flag support

* Rework encryption to use version envelope

* Format

* Pass accountability to payload service

* Return decrypted value to system calls

* Fix tampered test

* Add basic AI settings (#26097)

* Add ai settings

* Run formatter

* Add heading and notice

* Feat/refactor mcp (#26098)

* Refactor MCP into AI folder

* Run formatter

* Format translation

* Add dirname definitions

* Add ai/chat endpoint (#26104)

* Setup AI SDK endpoint

* Add tests

* Fix test quirks

* Implement tool support in chat endpoint (#26116)

* Add ai chat tool usage

* Gen in some tests

* Add json schema validation

* Update api/src/ai/chat/utils/chat-request-tool-to-ai-sdk-tool.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Refactor DRY

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Regen pnpmlock

* Update changeset to include themes pkg

* Feat/ai system prompt (#26124)

* Add system prompt setting

* Load middleware setting

* Add translatoins

* Allow passing systemprompt to createuimessages

* Pass system prompt from ai settings

* AI -> Add base layer AI UI components (#26115)

* components

* add ai sidebar to item route

* rough in ai model selector

* rough - ai-input

* mock message

* add reka-ui

* move to ai folder

* ai sdk vue

* model selector refactor

* shrink padding

* quick cleanup

* shorten model list

* install rest of ai sdk

* ai message parts

* refactor text area

* ai store

* update sidebar

* fix deps mismatch

* delete step

* update models to long form (again)

* refactor to pinia store

* remove tools stuff for now

* add openai reasoning detailed

* Update app/src/ai/components/ai-sidebar-detail.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix whitespace

* fix em up

* make max width 600 px

* fix sidebar scroll

* fix packages

* fix reka-ui

* cleanup message list

* cleanup message

* cleanup margins and unused css vars

* start reasoning open and then close when done

* refactor message list animation

* add reasoning translations

* refactor out scss

* remove progress bar

* model selector

* ai sidebar detail

* fix styling of message text

* refactor out variants in favor of simple role basis

* fix extra space

* remove unneeded variant

* refactor side prop

* replace spread with backwards loop

* fixes 1

* Move reka to devDependencies

* Logical properties

* Run stylelint

* convert to rem

* back to pickles

* Clean up multi-line tracking

* Use transition variables

* Use lodash throttle

* Use v-bind for css var

* Use $t instead of usei18n

* computed

* textarea magic

* Only show models from configured providers

* message tool translation

* Use transition vars

* Use vars for transition

* fix dupe

* remove opacity

* refactor reasonign

* add back empty tools array

* Refactor AI model selector dropdown to use transitions instead of keyframe animations (#26122)

* Initial plan

* Refactor dropdown animation to use transitions instead of keyframes

Co-authored-by: rijkvanzanten <9141017+rijkvanzanten@users.noreply.github.com>

* Update app/src/ai/components/ai-model-selector.vue

* Update app/src/ai/components/ai-model-selector.vue

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rijkvanzanten <9141017+rijkvanzanten@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* fix animation

* refactor model selector to use vmenu

* New Crowdin updates (#25908)

* New translations en-us.yaml (Russian)

* New translations en-us.yaml (Russian)

* New translations en-us.yaml (Czech)

* New translations en-us.yaml (Russian)

* New translations en-us.yaml (Arabic)

* New translations en-us.yaml (Lithuanian)

* New translations en-us.yaml (Portuguese)

* New translations en-us.yaml (Albanian)

* Update source file en-US.yaml

* New translations en-us.yaml (Persian)

* New translations en-us.yaml (Persian)

* New translations en-us.yaml (Korean)

* New translations en-us.yaml (Turkish)

* New translations en-us.yaml (French)

* New translations en-us.yaml (Turkish)

* New translations en-us.yaml (Turkish)

* New translations en-us.yaml (French)

* New translations en-us.yaml (French, Canada)

* Update source file en-US.yaml

* New translations en-us.yaml (Korean)

* Update source file en-US.yaml

* New translations en-us.yaml (Persian)

* New translations en-us.yaml (Persian)

* New translations en-us.yaml (Persian)

* Update source file en-US.yaml

* New translations en-us.yaml (Russian)

* New translations en-us.yaml (Czech)

* New translations en-us.yaml (Romanian)

* New translations en-us.yaml (French)

* New translations en-us.yaml (Spanish)

* New translations en-us.yaml (Arabic)

* New translations en-us.yaml (Bulgarian)

* New translations en-us.yaml (Catalan)

* New translations en-us.yaml (Danish)

* New translations en-us.yaml (German)

* New translations en-us.yaml (Greek)

* New translations en-us.yaml (Finnish)

* New translations en-us.yaml (Hebrew)

* New translations en-us.yaml (Hungarian)

* New translations en-us.yaml (Italian)

* New translations en-us.yaml (Japanese)

* New translations en-us.yaml (Georgian)

* New translations en-us.yaml (Korean)

* New translations en-us.yaml (Lithuanian)

* New translations en-us.yaml (Mongolian)

* New translations en-us.yaml (Dutch)

* New translations en-us.yaml (Polish)

* New translations en-us.yaml (Portuguese)

* New translations en-us.yaml (Slovak)

* New translations en-us.yaml (Slovenian)

* New translations en-us.yaml (Albanian)

* New translations en-us.yaml (Swedish)

* New translations en-us.yaml (Turkish)

* New translations en-us.yaml (Ukrainian)

* New translations en-us.yaml (Chinese Simplified)

* New translations en-us.yaml (Chinese Traditional)

* New translations en-us.yaml (Vietnamese)

* New translations en-us.yaml (Icelandic)

* New translations en-us.yaml (Portuguese, Brazilian)

* New translations en-us.yaml (Indonesian)

* New translations en-us.yaml (Persian)

* New translations en-us.yaml (Spanish, Chile)

* New translations en-us.yaml (Spanish, Mexico)

* New translations en-us.yaml (Marathi)

* New translations en-us.yaml (Thai)

* New translations en-us.yaml (Croatian)

* New translations en-us.yaml (Estonian)

* New translations en-us.yaml (Azerbaijani)

* New translations en-us.yaml (English, Canada)

* New translations en-us.yaml (English, United Kingdom)

* New translations en-us.yaml (French, Canada)

* New translations en-us.yaml (Esperanto)

* New translations en-us.yaml (Bosnian)

* New translations en-us.yaml (Nepali)

* New translations en-us.yaml (Kurmanji (Kurdish))

* New translations en-us.yaml (Sorani (Kurdish))

* New translations en-us.yaml (Spanish, Latin America)

* Update source file en-US.yaml

* New translations en-us.yaml (Persian)

* New translations en-us.yaml (Russian)

* New translations en-us.yaml (Czech)

* New translations en-us.yaml (Romanian)

* New translations en-us.yaml (French)

* New translations en-us.yaml (Spanish)

* New translations en-us.yaml (Afrikaans)

* New translations en-us.yaml (Arabic)

* New translations en-us.yaml (Bulgarian)

* New translations en-us.yaml (Catalan)

* New translations en-us.yaml (Danish)

* New translations en-us.yaml (German)

* New translations en-us.yaml (Greek)

* New translations en-us.yaml (Finnish)

* New translations en-us.yaml (Hebrew)

* New translations en-us.yaml (Hungarian)

* New translations en-us.yaml (Italian)

* New translations en-us.yaml (Japanese)

* New translations en-us.yaml (Georgian)

* New translations en-us.yaml (Korean)

* New translations en-us.yaml (Lithuanian)

* New translations en-us.yaml (Mongolian)

* New translations en-us.yaml (Dutch)

* New translations en-us.yaml (Norwegian)

* New translations en-us.yaml (Polish)

* New translations en-us.yaml (Portuguese)

* New translations en-us.yaml (Slovak)

* New translations en-us.yaml (Slovenian)

* New translations en-us.yaml (Albanian)

* New translations en-us.yaml (Serbian (Cyrillic))

* New translations en-us.yaml (Swedish)

* New translations en-us.yaml (Turkish)

* New translations en-us.yaml (Ukrainian)

* New translations en-us.yaml (Chinese Simplified)

* New translations en-us.yaml (Chinese Traditional)

* New translations en-us.yaml (Vietnamese)

* New translations en-us.yaml (Icelandic)

* New translations en-us.yaml (Portuguese, Brazilian)

* New translations en-us.yaml (Indonesian)

* New translations en-us.yaml (Persian)

* New translations en-us.yaml (Spanish, Chile)

* New translations en-us.yaml (Spanish, Mexico)

* New translations en-us.yaml (Marathi)

* New translations en-us.yaml (Thai)

* New translations en-us.yaml (Croatian)

* New translations en-us.yaml (Estonian)

* New translations en-us.yaml (Malay)

* New translations en-us.yaml (English, Canada)

* New translations en-us.yaml (English, United Kingdom)

* New translations en-us.yaml (French, Canada)

* New translations en-us.yaml (Esperanto)

* New translations en-us.yaml (Breton)

* New translations en-us.yaml (Bosnian)

* New translations en-us.yaml (Serbian (Latin))

* New translations en-us.yaml (Nepali)

* New translations en-us.yaml (Kurmanji (Kurdish))

* New translations en-us.yaml (Sorani (Kurdish))

* New translations en-us.yaml (Spanish, Latin America)

* Update source file en-US.yaml

* Fix broken tests

---------

Co-authored-by: Alex Gaillard <alex@directus.io>

* Release 11.13.0 (#26114)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update changeset to include themes pkg

* refactor message list scrolling

* Rerender based on parts hash

* Remove unused imports

* Allow more models

* cleanup tool markup

* cleanup more

* fix resizing

* Remove unused import

* Apply suggestion from @rijkvanzanten

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rijkvanzanten <9141017+rijkvanzanten@users.noreply.github.com>
Co-authored-by: Alex Gaillard <alex@directus.io>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Delete .github/CODEOWNERS

* Fix layout display dependant on item count request (#26045)

* Fix itemCount dep for item display

* add changeset

* Update app/src/layouts/cards/cards.vue

Co-authored-by: Alex Gaillard <alex@directus.io>

* Update app/src/layouts/tabular/tabular.vue

Co-authored-by: Alex Gaillard <alex@directus.io>

* add pagination skeleton loader

* only display skeleton if items are at least page limit

* Prefer 3 skeletons over 1

* fix skeleton loader tests

---------

Co-authored-by: Alex Gaillard <alex@directus.io>

* Add loading indicator when saving setup forms (#26130)

* Add loading indicator when saving

* Rename instance to project for consistency

* Add loading indicator when launching

* Rename remaining instances

* Add changeset

* Remove invalid label

* Remove accepted terms (#26135)

* Remove  accepted_terms

* Add changeset

---------

Co-authored-by: Alex Gaillard <alex@directus.io>

* Add Error Handling (#26138)

* error handling

* retry vs regenerate

* Update app/src/ai/components/ai-conversation.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/ai/components/ai-conversation.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add `defineTool` composable (#26140)

* Don't send system prompt if it's empty

* Remove unnecessary functions

* Support dynamic tool registratoin

* Create defineTool composable

* Define form tools

* Add tests

* Update app/src/components/v-form/v-form.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/components/v-form/composables/use-input-schema.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/components/v-form/v-form.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add reset button (#26141)

* Tweak sidebar min size

* Move model selector out of chat input

* Tweak spacing

* Make it less button-y

* Reduce hackiness

* Add reset method

* Add section subheader

* Use reset

* Reduce sidebar detail padding

* Move ctx to bottom start

* AI -> Reasoning message cleanup (#26145)

* cleanup reasoning

* fix fontsize

* Only show reasoning summary once exists

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* AI -> Improve rendering of messages (#26144)

* cleanup message structure

* fix mounting / unmount using id instead of hash

* Tweak loading state

* Tweak delays

* Remove needless hash

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* AI -> Add logos for model selector (#26142)

* add logos to model selector

* refactor

* Update app/src/ai/components/logos/anthropic.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/ai/components/logos/openai.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* final answer

* swap claude logo

* Render divider in selector

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Tweak spacing

* AI -> Submit and Stop Button (#26150)

* wip

* refactor

* handle reasoning errors on stop

* hide messages without text

* still show reasoning if streaming but no text

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Redo the sidebar (#26149)

* [WIP] Remove info sidebar detail

* [WIP] Style new accordion

* Render ai sidebar detail at bottom

* Add expand animation

* Sidebar collapse/expand

* Various tweaks and fixes

* Fix transition states

* Fix active state on navigate

* Update app/src/modules/files/components/file-info-sidebar-detail.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* AI -> Submit and Stop Button (#26150)

* wip

* refactor

* handle reasoning errors on stop

* hide messages without text

* still show reasoning if streaming but no text

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Re-add support for badge, fix other comments

* Fix z-indexing

* Persist ai chat active state

* Move aiChat active state to ai store

* Remove notes

* Remove bak

* fix revisions overflow

* Resolve comment

* Bump +1 boop

* Add units to rotate 0

* Remove unused placement prop

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Bryant Gillespie <bryant@hireclockwork.com>

* Fix font size of layout options

* Hack in empty state (#26151)

* Add support for local tool display names

* Fix server tools not being called

* Add tooltip

* Fix absolute positioned elements in scrolling container

* AI -> Cleanup Tool Messages (#26163)

* cleanup tool message part

* match text message padding

* drop content to 280px

* Fix horizontal overflw

* Update app/src/components/v-drawer.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/views/private/components/sidebar-detail.vue

Co-authored-by: Bryant Gillespie <bryant@hireclockwork.com>

* Update app/src/components/v-drawer.vue

Co-authored-by: Bryant Gillespie <bryant@hireclockwork.com>

* Remove old file

* Update app/src/components/v-drawer.vue

Co-authored-by: Bryant Gillespie <bryant@hireclockwork.com>

* Re-add activity link

* Use hyphens for template ref

* No small

* Remove unused class

* Only show sections when sidebar open

* Only show notifications preview when bar is expanded

* Expand sidebar on activity click

* Please formatter, forgive my sins

* Fix duplicate attributes

* AI -> Chat Flow Improvements (#26185)

* store chat open in local storage for refreshes

* fix autoscrolling

* move input to store and fix submission with enter

* add meta j keyboard shortcut to open close ai chat

* measure no longer needed

* Fix button jumping on scroll

* Replace watcher with event hook

* Capture shortcut globally, add tooltip

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* fix items prompt for ai tools (#26183)

* Tweak scrolling behavior (#26211)

* AI -> Fix failed tool calls (#26179)

* add helper to ensure input in failed tool calls

* use helper -- don't validate the tools themselves

* fix reasoning message issues

* add test suite

* update chat controller tests

* thanks copilot

* Fix merge conflict whoopsies (#26214)

* AI → Limit context usage (#26202)

* Use : instead of / for model ids

* Refactor to use full model definition

* Calculate usage

* Remove pro

* Show context usage progress indicator

* Remove unused package

* Don't show context usage

* Limit messages we're sending

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove unused comment

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix schemas for dates

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: bryantgillespie <hey@bryantgillespie.com>

* AI -> Message Styling (#26198)

* store chat open in local storage for refreshes

* fix autoscrolling

* move input to store and fix submission with enter

* add meta j keyboard shortcut to open close ai chat

* measure no longer needed

* increase message gap

* cleanup message tool styling

* fix padding and scrollbar on chat

* refactor ai-message component to improve structure and styling; updated gap variable and added role prop to AiMessageText

* message styling

* add css animation on hover when not expanded

* fix height transition

* fix trailing space

* add  todo list focus

* fix border radius for user messages

* fix duped

* remove unneeded watch

* fix import order

* animate text and icons only

* Update app/src/ai/components/parts/ai-message-tool.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Tweak spacing for loading indicator

* Resolve translation comment

* Magic is magic

* Enough magic

* Remove unused stuff

* Resolve hardcoded reused msg height

* Run formatter

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Re-add notifications

* AI -> Persist session using local storage (#26199)

* persist current session

* Use sessionstorage instead

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Run formatter

* Tie AI access to app access (#26251)

* Allow divider to overlap sticky headings in main (#26252)

* Some Fixes for Split Panel (#26254)

* use container queries for form

* wip

* back to percent

* unwrap preview

* fix type

* unneeded setter

* remove unneded function

* cleaner compueted

* its either 100 or 0

* Add changeset

* Run formatter

* Fix stylelint warning

* Fix API typing of sanitizeQuery

* AI → Refresh stores on system tool calls (#26253)

* Refresh schema on system tool calls

* Refactor relations store to setup

* Add item refresh to all layouts

* Add item refresh on detail view

* Refresh fields on collection changes

* AI → Re-enable notifications (#26250)

* Render notifications outside of sidebar

* Use absolute in split container

* Fix animation

* Render link to activity in notifications drawer

* Add AI Chat sidebar  (#26261)

* Initial plan

* Refactor test to use typed mockNext instead of inline vi.fn() for RequestHandler calls

Co-authored-by: rijkvanzanten <9141017+rijkvanzanten@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rijkvanzanten <9141017+rijkvanzanten@users.noreply.github.com>

* Happy now?

* Resolve test issue

* Make sure left/right panel close icons RTL

* Resolve test issues

* AI → Add soft-default for system prompt (#26268)

* Add soft-default for system prompt

* Update test to account for default value

* update system prompt

---------

Co-authored-by: bryantgillespie <hey@bryantgillespie.com>
Co-authored-by: Bryant Gillespie <bryant@hireclockwork.com>

* AI -> Tool Approval Functionality (#26265)

* Refactor to tool card for approvals and web search tool (later)

* update to ai sdk beta for tool approvals

* add settings menu

* adust padding for settings menu

* update store

* add approvals to chat request

* stronger types

* update controller

* update send automatically when

* run formatter

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/ai/stores/use-ai.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* remove assets from translations for now

* refactor approval options

* tool card disabled

* add icons to map as well

* remove casting

* fix double scroll bar

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix typing of stream call

* Add enter key for translate shortcut

* Translate keyboard shortcuts

* Remove keyboard shortcuts

* Use css vars

* Use translated tool names

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* AI -> Hide when No Providers / Not Configured (#26269)

* add beta

* move header

* add no provider empty states

* translations

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Nudge nudge

* I'm sorry.

* Update .changeset/small-doodles-join.md

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/settings/routes/flows/components/logs-sidebar-detail.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view/components/private-view-resize-handle.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/components/layout-sidebar-detail.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/components/sidebar-detail.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/settings/routes/marketplace/routes/registry/registry.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/settings/routes/system-logs/logs.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/settings/routes/system-logs/logs.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/interfaces/_system/system-owner/system-owner.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/components/skip-menu.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view/components/private-view-main.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/components/v-form/composables/use-input-schema.ts

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/components/v-form/composables/use-input-schema.ts

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view/components/private-view.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/ai/components/parts/ai-message-text.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/visual/components/editing-layer.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/visual/components/editing-layer.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/components/v-drawer-header.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/components/v-drawer-header.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view/components/private-view-main.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view/components/private-view-header-bar.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/components/notifications-drawer.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/content/routes/item.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* search input: match header button height and refine styles with CSS variables (#26308)

* add BREAKPOINTS constant and update private-view-root.vue to demonstrate example usage (#26310)

* AI → Resolve review comments (#26290)

* Add a smidge of padding

* Add a pinch of flex

* Stir in the drawing spacing

* Re-add missing drawer close on mobile

* Fix z-index of header bar

* Tweak stacking order of search input

* Resolve shadow showing up on nav on mobile

* Only show tooltip when sidebar is closed

* Drop shortcut

* Nudge cancel button size and positioning

* Make drawer buttons smaller

* Fix input height in sidebar

* Drop unused dependency

* Change translation key

* Add in type label tweaks

* Tweak drawer title styling

* Stick header bar at 0

* Tweak skeleton loader

* Allow inline size to shrink

* Fix missing import

* Don't inherit attrs on private view

* Collapse right sidebar when making window small

* fix appearance

* Tweak sizing of right rail

* Don't deactivate on unmount

* Fix right sidebar alignment

* sidebar is closed and you try to open it by resizing while the preview split-panel is open

* Re-add non-editable

* Tweak revision styling

* 💅 f l  o   r    i     a      n

* Refactor v-form ai usage to composable

* Tweak spacing

* Update import

* Rename description to llmDescription

* Use prop shorthands

* Don't use flow sidebar detail in translations

* Don't use unused prop

* Move vars to top

* Add comment

* Remove unused ref

* Drop navbar/sidebar from app store

* Revert version menu

* button type

* Remove fullscreen

* Use private view header bar actions

* Fix custom icons not scaling

* Remove unused css

* Use class instead of id

Don't you forget about the ˚₊‧꒰ა best practices ໒꒱ ‧₊˚

* Update input-hash component to conditionally set input type and autocomplete attributes based on masked state

* revert fields user change

* remove todos

* Update app/src/components/v-drawer-header.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Pass direction to split panel

* Update split panel

* Revert "Rename description to llmDescription"

This reverts commit 162a6d5fdc.

* Solve name confusion with just comments

* Update app/src/components/v-form/composables/use-ai-tools.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/components/v-drawer-header.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Run formatter/linter

---------

Co-authored-by: bryantgillespie <hey@bryantgillespie.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* AI ← Spacing & responsive refinements (#26309)

* introduce --form-column-min-width var

* move container-type: inline-size to the form-grid mixin

* set inline-size container query to 556px

* adjust sidebar content padding to match sidebar toggle buttons

* refine the project name padding so it optically matches the contents of the navigation bar

* set --content-padding and --content-padding-bottom vars globally

* refine spacing of item form

* add top padding to content components

* remove top margin in favor of added top padding

* Tweak spacing a bit more

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Prettier doesn't agree sadly

* Add changeset for stores package

* Update app/src/modules/content/routes/item.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/ai/components/ai-sidebar-detail.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/content/routes/item.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Remove unused file

* Icon sizes

* Align drawer header with other header

* Fix descender overflow

* Re-add tooltip

* AI ← Drawer & Header (#26317)

* add Esc hint to cancel tooltip for consistency with the cancel button outside the drawer

* adjust alignment of drawer cancel button to match header bar icons

* prevent extra padding-right of forms in the drawer

* ensure that title styles are applied to the drawer header

* prevent the title text from being cut off in the header bar and the drawer header

* Update app/src/views/private/private-view/components/private-view-header-bar.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view/components/private-view-main.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view/components/private-view-main.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view/components/private-view-main.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view/components/private-view-main.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/content/routes/item.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/content/routes/item.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/modules/content/routes/item.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* fix private view main

* update docs link and system prompt help text

* formatter

* fix stylelint comments

* AI -> Add Back Scroll Shadows but Better (#26313)

* add scroll shadows to scroll container in private view

* Update app/src/styles/themes/_dark.scss

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/views/private/private-view/components/private-view.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* set to false instead of undefined

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update app/src/modules/content/routes/item.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* render only split panel

* Fix calendar/map view

* fix header border mismatch for color match theme

* Fix button size in field detail

* Fix more drawer button sizes

* borders are back

* Fix map / calendar not resizing on sidebar size change

* Run formatter

* fix layout bottom

* fix calendar

* fizx tests

* update test snapshot

* use internal BREAKPOINTS const and remove redundant use of useBreakpoints (#26329)

* fix form type imports

* Update app/src/views/private/private-view/components/private-view-header-bar.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/components/v-drawer-header.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* enforce map view shadows and fix initialization issue

* remove unused line

* fix border for color match themne

* Tweak default

* Revert input-hash changes, use new autocomplete prop

* oops missed the import

* AI ← Live Preview (#26330)

* prevent iframe from loading when live preview is not active

* add default live preview size as snap point so that we can easily resize to the default size

* ensure that the live preview panel border only appears when not displayed at full width (mobile)

* Run formatter

* Add changeset

* fix search input for mobile (#26331)

* prevent submissions when pending tool call

* AI ← Improve input focusing (#26334)

* Focus on textarea when clicking within ai-input

* Use text cursor

* Fix cursor when disabled

* fix max-width issue of search input on mobile (#26339)

* AI ← A11y adjustments for Skip Menu and headline elements (#26337)

* refactor SkipMenu usage so it appears next to its section

* refactor SkipMenu keys to match section ID naming

* ensure that sections accessed via the skip menu expand properly if they are collapsed

* adjust the SkipMenu min-width to match the sidebar min-width

* update tests

* fix focus styles for headline elements

* adjust positioning for mobile skip menu inside module navigation

* add dynamic id binding to module navigation content for improved accessibility

* Update app/src/views/private/components/skip-menu.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix line-height in type-title mixin (#26341)

* AI <- Hot Last Minute Quick Fixes (#26332)

* close inline nav on route change

* fix activator warnings

* Update app/src/views/private/private-view/stores/nav-bar.ts

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* pull in sidebar store

---------

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* AI Chat <- Clears Messages and Settings on Sign Out (#26342)

* clear messages and settings on signout

* Add test coverage for AI store dehydrate function (#26343)

* Initial plan

* Add test coverage for dehydrate function in AI store

Co-authored-by: rijkvanzanten <9141017+rijkvanzanten@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rijkvanzanten <9141017+rijkvanzanten@users.noreply.github.com>

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rijkvanzanten <9141017+rijkvanzanten@users.noreply.github.com>

* Update .changeset/short-lamps-hunt.md

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Add AI Telemetry (#26347)

* Add AI-related fields to telemetry

* Include AI-related fields in tests

* Use AI suggestion

---------

Co-authored-by: Bryant Gillespie <bryant@hireclockwork.com>
Co-authored-by: daedalus <44623501+ComfortablyCoding@users.noreply.github.com>
Co-authored-by: Nitwel <mail@nitwel.de>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rijkvanzanten <9141017+rijkvanzanten@users.noreply.github.com>
Co-authored-by: Alex Gaillard <alex@directus.io>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Gerard Lamusse <gerardlamo@gmail.com>
Co-authored-by: bryantgillespie <hey@bryantgillespie.com>
Co-authored-by: Florian C. Wachmann <dev@formfcw.com>
Co-authored-by: Connor Winston <connor@winston.guru>
2025-12-09 13:36:32 -05:00
ian
f74b2c1f76 Release 11.13.4 (#26240)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-21 11:18:20 -05:00
ian
15276cd55c Release 11.13.3 (#26225)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-19 11:44:19 -05:00
ian
cb022a6e25 Release 11.13.2 (#26160)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-10 19:48:49 +00:00
ian
f636050870 Release 11.13.1 (#26143)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-07 13:07:48 -05:00
ian
79b0648d4f Release 11.13.0 (#26114)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-04 20:14:16 +00:00
Nitwel
552d14f486 Add setup flow and license agreement banner 🧑‍⚖️ (#25983)
* add setup flow and drawer for editing owner

* add popup on setup instance and cookie to dismiss

* fix editing product owner

* add env variable and organize code

* small fix

* don't generate creds when bootstrapping

* fix types

* cleanup

* fmt

* fix router test

* insert project owner on migrate and move email regex into constants

* improve editing experience

* fix input password

* add email validation to other forms

* update setup, make form hide menu, persist usage and co.

* fmt

* Fix rename

* Use boolean-ish name

* change names and cleanup migrations

* cleanup logger

* add project id to owner report

* fix building

* Prefix usage translation keys

* Update translations
changes could be tidied up to reduce duplication depending on requirements

* Tighten up gaps

* Rename for consistency

* add retries when sending fails

* add utm-location prop

* remove email regex and other fixes

* fix ts

* utilize same sendReport function

* small tweaks

* add form validation

* cleanup

* cleanup

* temp commit

* finish polishing

* update pnpm-lock

* fmt

* small fixes

* add changeset

* improve owner interface, vue form and hopefuly last cleanups

* emit changed value again

* Update .changeset/quick-seals-add.md

Co-authored-by: ian <licitdev@gmail.com>

* Use past tense

* Fix lint warnings

* fix form field label and system owner product_updates

* rename email to product_owner

* fix rename email to project owner

* fix tests

* fix rename

* fix app tests

* Update api/src/controllers/server.ts

Co-authored-by: ian <licitdev@gmail.com>

---------

Co-authored-by: ian <licitdev@gmail.com>
2025-11-04 12:02:18 -05:00
ian
17665bf348 Release 11.12.0 (#25850)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-16 19:42:40 +00:00
Alex Gaillard
f55913653b Release 11.11.0 (#25765) 2025-08-27 18:04:33 +00:00
Alex Gaillard
88e4143df9 Release 11.10.2 (#25679) 2025-08-12 15:50:04 -04:00
Alex Gaillard
3a561ad801 Release 11.10.1 (#25669) 2025-08-11 18:50:25 +00:00
Rijk van Zanten
7d2310badd Finish dependency move (#25583)
* Dangerously update API deps

* Dangerously move app dependencies to pnpm-workspace

* Move all dependencies to catalog

* Sort catalog

* Pnpm update

* Use pnpm 10.14

* Update for zod breaking change

* Fix unhead breaking change

* Downgrade major api upgrades

* Downgrade app major upgrades

* Fix app tests

* Downgrade isolated-vm

* Add changeset

* Fix template in head

* Resolve unhead lang signature

* Downgrade unhead

* Downgrade keyv/redis

It uses a different redis lib under the hood which is incompatible

* Resolve import in test

* Update and move workspace root dependencies

* Update CSS for updated linter rules

* Oops

* Run formatter

* Update rule name

* Run prettier

* Move utils peer to catalog

* Add focus-trap dependency
2025-08-04 18:13:12 -04:00
daedalus
2836948dab Update dependency form-data (#25579)
* update form-data

* update subdep form-data

* add changeset

* add form-data to catalog
2025-08-01 19:26:36 +02:00
Rijk van Zanten
3491af9de4 Make tests deterministic, remove @directus/random (#25575)
* Make tests deterministic by dropping random

* Remove random dep

* Drop random package

* Update pnpm lock

* Update app/src/composables/use-permissions/collection/lib/is-action-allowed.test.ts

---------

Co-authored-by: Alex Gaillard <alex@directus.io>
2025-07-31 17:16:40 -04:00
Alex Gaillard
e109a6f2d6 Release 11.10.0 (#25557) 2025-07-30 17:12:15 +00:00
Rijk van Zanten
4f94a26b56 Add native support for RTL direction (#25494)
* Setup language_direction user setting

* Add option translations

* Add rtl const

* Return dir from getCurrentLanguage

* Set htmlAttrs for lang / dir

* Update tests, fix fallback

* Add test:watch script

* Add rtl transform in icon file

* Make sure the progress bar animates rtl

Devil's in the details

* Make sure sidebar animates correctly on smaller screens

* Care too much about the details

* Fix directionality on slider

* Fix drawer transitions

* Arrow alignment in settings

* Stacked drawers effect

* Full screen navigation

* Revert menu alignment

* Fix nudging on smoke click

* Add changeset

* Update app/src/components/v-menu.vue

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Format

* Format rebased work

* One more formatting quirk

* Update app/src/lang/translations/en-US.yaml

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update .changeset/giant-cloths-play.md

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Add translation

* Remove importants

* Improve typing in get-current-language

* Update app/src/views/private/private-view.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Update app/src/views/private/private-view.vue

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>

* Fix tooltip directions

* Refactor user store to setup script

* Add language/dir to userStore

* Replace getCurrentLanguage w/ userStore

* Make html attrs reactive

* Rename language_direction to text_direction

* Appease the robot overlords

* Add text-direction to user type

* Make text-direction not nullable

* Fix arrow alignment

* fix top tooltips

* run formatter

* mirror directional icons

* Fix positioning for rtl

* Fix flow attachments

* Replace magic number with const

* Start refactoring arrows business logic

No way to properly write unit tests for these bits otherwise. Increases the surface of this PR quite a bit, but feels like a necessary evil...

* Move minMaxPoint to separate file

* Move is-point-in-panel out

* Move generateCorner to separate file

* Update docs

* Move range function out

* Move find-best-position to separate file

* Move get-points to separate file

* Move generate-path out of main fn

* Move create-line to separate file

* Rewrite docblock

* Add tests for generate arrows

* Make sure icons are only mirrored in rtl

* Add RTL for flow arrows

* Run formatter

* Remove extraneous setLanguage calls

* Fix mocks

* Fix generate test

* Fix review notes

* Fix pinia test stubbing

* Fix test runner and add coverage for rtl

* Mock global pinia in v-info test

* Remove unused imports

* Remove unused type

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Florian C. Wachmann <dev@formfcw.com>
2025-07-28 13:59:32 -04:00
Rijk van Zanten
e72483fb76 Add Codecov upload on test CI (#25470)
* Add consistent test:coverage scripts

* Add missing coverage deps

* Submit to codecov

* Update .github/workflows/check.yml

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Add codecov config

* Run formatter, remove branches

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-07-17 16:29:02 -04:00
Rijk van Zanten
2edbea9386 Move common dependencies to catalog (#25467)
* Update pnpm to v10

* Update package.json

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Allow builds

* Move common dependencies to catalog

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-15 14:40:28 -04:00
ian
46564d7a00 Release 11.9.3 (#25426) 2025-07-09 11:11:46 +00:00
Alex Gaillard
7532b2b8fc Release 11.9.2 (#25388) 2025-07-01 15:16:35 +00:00
Alex Gaillard
3f4e6df99c Release 11.9.1 (#25382) 2025-06-30 16:32:50 +00:00
Alex Gaillard
b8a47c621a Release 11.9.0 (#25358) 2025-06-25 17:58:44 +00:00
Brainslug
d0164c1ebb Dependabot updates (#25267)
* Bump tar-fs to 2.1.2

* Bump vue-i18n to 11.1.2

* Bump vite to 4.5.14

* Bump vite to 5.4.19

* Bump undici to 7.5.0

* Create six-dryers-punch.md

* fix lock
2025-06-19 10:12:42 -04:00
Florian C. Wachmann
59f04a294d Add keyboard accessibility (#25214)
* update base styles

* remove rendundant focus styles in v-button

* update base styles

* ensure keyboard navigation for the base layout

* make clickable v-icon component accessible and update instances accordingly

* make v-fancy-select accessible

* make clickable v-chip component accessible

* update focus ring offset for select cell in table row component

* add focus-visible style for search and filter icons

* make shortcuts in permissions row accessible with button elements and focus-visible styles

* enhance accessibility for custom input in select-radio component

* make field name clickable by changing span to button for improved accessibility

* add border-radius to focus-visible style for improved consistency

* implement focus trap in v-dialog component

* refactor focus ring styles for improved accessibility and consistency

* update focus ring styles for base layout

* add skip menu component for improved navigation accessibility

* refactor live preview component to improve accessibility

* implement focus trap and escape key handling in v-menu component for improved accessibility

* refactor select-color component styles for improved focus ring consistency

* improve search input component accessibility

* enhance node component styles for improved focus visibility

* refactor v-input and v-select components for improved accessibility

* update snapshots

* improve keyboard navigation of v-list-group and v-list-item

* remove unused focus ring styles from private view component

* add noFocusReturn prop to v-menu for improved focus management

* refactor module-bar-avatar component for improved focus management and accessibility

* refactor notifications-preview component to improve structure

* add aria-expanded attribute to sidebar-button component for improved accessibility

* update useFocusTrap configuration to prevent escape key from deactivating focus trap

* refactor header component to improve selection button behavior and accessibility

* add apply event to dialogs for improved user interaction & accessibility

- Updated v-dialog components to emit an 'apply' event for better handling of user actions.
- Enhanced various components including v-drawer, v-upload, and v-remove to utilize the new 'apply' event.
- Improved accessibility and user experience by allowing actions to be triggered on specific conditions.

* enhance table layout for improved keyboard accessibility

* enhance focus visibility styles for breadcrumb and version button components

* add another focus ring offset variable

* enhance focus ring styles for active version item in version menu

* enhance context menu toggle styles for improved focus visibility

* refactor select-dropdown-m2o component for improved structure and accessibility

* update focus ring offset for block style in v-checkbox component

* refactor focus ring styles for improved accessibility on main elements

* enhance keyboard accessibility for table row interactions

* enhance keyboard accessibility for item links in list components

* update focus ring styles for markdown editor to improve accessibility

* refactor input handling and improve activation logic for autocomplete component

* enhance color picker interaction by adding toggle functionality and improving focus handling

* enhance icon interface interaction by adding click and keydown event handling for better accessibility

* refactor datetime interface by replacing v-input with v-list-item for improved structure and accessibility

* enhance focus styles for map interface to improve accessibility

* enhance focus styles for list items in datetime and select-dropdown interfaces to improve accessibility

* improve translation interface accessibility

* refactor group detail interface for improved accessibility and interaction

* enhance dialog interactions with apply handlers for improved user experience

* enhance v-checkbox and select-multiple-checkbox components with focus handling for custom inputs

* enhance v-checkbox and select-multiple-checkbox components for improved accessibility

* update tests

* refactor: replace label div with button for improved accessibility and interaction

* refactor: replace v-input with v-list-item for improved interaction and accessibility

* style: adjust spacing in v-checkbox for improved layout and readability

* refactor: update addOtherValue function to accept focus parameter for improved interaction

* fix: add tabindex to file input for better accessibility and set button type for cancel action

* refactor: replace v-input with v-list-item for improved interaction and accessibility

* fix: add immediate option to watch for internalActive in useOverlayFocusTrap for better responsiveness

* add applyShortcut prop to v-dialog, v-drawer, and overlay-item for customizable keyboard shortcuts

* feat: implement file input interaction with v-list-item for improved Accessibility

* improve accessibility for comments sidebar

* refactor: replace div with button in v-detail and revision-item for improved accessibility

* fix: update button attributes and focus-visible styles for improved accessibility

* feat: add apply event to dialogs for improved interaction handling

* fix: refactor removeField function for improved clarity and accessibility

* update key binding in v-fancy-select template for improved rendering

* fix: enhance keyboard interaction for table row

* fix: add button type attribute and style for 'set to now' functionality in date picker

* fix: ensure primary key updates only when there are internal edits in overlay-item

* update dialog apply handlers

* add changeset

* prettier

* rename focusCustomInput prop to autofocusCustomInput for clarity

* re-rename class to `other-input`

* add class to buttons in field template and translation input for improved clarity

* remove unnecessary offset property from v-list-item styles

* refactor: move headerColor style to the style block

* style: add `-webkit-user-select` to each occurrence of `user-select`

* style: move outline reset css to the `*:not(svg *)`

* Refactor itemsMap object to allItems array

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* fix previous code suggestion issues

* reduce z-index value for skip menu component

* refactor: move @apply scripts from template to script block

* refactor larger inline scripts to script block

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2025-06-06 11:54:53 -04:00
Alex Gaillard
ccf2f3d38f Release v11.8.0 (#25252) 2025-05-28 13:29:21 -04:00
ian
10bab7eb93 Release 11.7.2 (#25146) 2025-04-29 17:29:18 -04:00
Alex Gaillard
374c01ae6d Release 11.7.1 (#25142) 2025-04-29 20:02:20 +00:00
Alex Gaillard
76d7c4f504 Release 11.7.0 (#25137) 2025-04-29 11:46:37 -04:00
ian
7f69b51184 Update axios to 1.8.4 (#25110)
* Update axios to 1.8.4

* Add changeset
2025-04-23 11:21:32 -04:00
ian
b792144609 Release 11.6.1 (#25007) 2025-04-01 21:44:45 +08:00
Alex Gaillard
9fed080c8a Release 11.6.0 (#24964) 2025-03-25 13:05:10 -04:00