UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
Fixed Content Versioning to correctly merge relational data and support all query parameter functionality (#25437)
The following changes should be kept in mind when updating:
Relational versioned data now requires explicit field expansion to be included in the response.
Invalid data (e.g. Fails validation rules) will error on query
Filter conditions now apply to the versioned data instead of the main record
For more information, please read the breaking change docs for a full list of changes.
Additionally there will be further breaking changes to USER_CREATED, USER_UPDATED, DATE_CREATED, DATE_UPDATED default values in a followup PR to improve this behavior further.
Check in with #25744 to see more info about the breaking changes.
β¨ New Features & Improvements
@directus/api
Fixed Content Versioning to correctly merge relational data and support all query parameter functionality (#25437 by @Nitwel)
@directus/app
Fixed links in WYSIWYG missing underline and pointer cursor styling (#25739 by @Abdallah-Awwad)
Added a new field to conditions for clearing hidden fields on save (#25646 by @robluton)
π Bug Fixes & Optimizations
@directus/app
Fixed timestamp fields being incorrectly marked as changed due to timezone mismatch (#25718 by @khanahmad4527)
Fixed code button state not updating when exiting code mode in WYSIWYG (#25741 by @Abdallah-Awwad)
Added currentItem id check to prevent in-flight api call from returning stale data (#25660 by @robluton)
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
UpSnap is, and always will be, free and open source software.
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
Added TypeScript support for services within the extension context (#25368)
The services exposed to API extensions using TypeScript are now fully typed instead of any, which may cause new type errors when building extensions.
Arguments of service methods are now strictly typed, which can result in type errors for broader types that would not error before:
The ItemsService constructor now expects the collection name to be a string and will error on string | undefined (or other unions).
Similarly, functions like service.readOne()/service.readMany() now expect string | number for their primary keys and will error for nullable types
As a workaround, casting the services back to any will result in the original behavior. However, it is recommended to resolve the type errors instead.
@directus/extensions-sdk
Added TypeScript support for services within the extension context (#25368 by @that1matt)
Exclude database-only tables from snapshots (#25271)
Snapshots now exclude tables not tracked in directus_collections (database-only tables).
Source Version
Target Version
Behavior
Impact
< 11.10.0
β₯ 11.10.0
Database-only tables from source will be created on target
β οΈ Tables added
β₯ 11.10.0
< 11.10.0
Database-only tables will be dropped from target
π¨ Data loss risk
β₯ 11.10.0
β₯ 11.10.0
Database-only tables are ignored in snapshots
β No changes
< 11.10.0
< 11.10.0
Database-only tables may be created or dropped
β οΈ Depends on the diff between source/target
Please review your snapshot workflows to ensure these changes will not result in unexpected behaviour.
@directus/api
Fixed replacing process.env.NODE_ENV on backend extensions (#25180 by @Nitwel)
Exclude database-only tables from snapshots (#25271 by @Nitwel)
@directus/extensions-sdk
Upgraded all dependencies of @directus/extensions-sdk to the latest major versions of Rollup and Vite, and resolved several false-positive security reports. (#25486 by @rijkvanzanten) β οΈ This change also raises the minimum supported Node.js version to 20.19.0.
Fixed replacing process.env.NODE_ENV on backend extensions (#25180 by @Nitwel)
Added support for LDAP login and enhanced parameter consistency for refresh/logout commands. Allowed overriding the mode in refresh and logout commands to be inline with login (#25132)
The login method now accepts a payload object instead of separate email and password parameters.
This enables support for both standard and LDAP authentication, but requires updates to code that previously called sdk.login(email, password).
The new usage is sdk.login({ email, password }) or sdk.login({ identifier, password }) for LDAP.
The refresh and logout command method parameters have been updated to be consistent across usage. The functions now accept an options object instead of their previous regular parameters.
For example the new usage for refresh is sdk.request(refresh({ mode: "json", refresh_token })) instead of sdk.request(refresh('json', refresh_token)).
@directus/api
Fixed manual flows to only trigger with appropriate permissions (#25354 by @br41nslug)
@directus/sdk
Added support for LDAP login and enhanced parameter consistency for refresh/logout commands. Allowed overriding the mode in refresh and logout commands to be inline with login (#25132 by @ComfortablyCoding)