v3.60.0
📦 payload-cmsView on GitHub →
✨ 8 features🐛 13 fixes🔧 11 symbols
Summary
Version v3.60.0 introduces flexible localization support by allowing multiple fallback locales and enhances the admin UI with a new settings menu. This release also brings significant improvements to the multi-tenant plugin's access control and fixes numerous bugs across database integrations and the Lexical rich text editor.
Migration Steps
- If using the multi-tenant plugin, review and potentially update collection access configurations to utilize the new `accessResultOverride` callback if custom access logic across tenants is required.
- If using the multi-tenant plugin, update tenant field configurations if you need documents to belong to multiple tenants using `hasMany` relationships.
- If using the multi-tenant plugin, review access control on the users collection if custom overrides are needed via `usersAccessResultOverride`.
✨ New Features
- Accepts multiple locales in `fallbackLocale` for queries, locale configs, Local API, REST API, and GraphQL, allowing sequential fallback checking.
- Adds `settingsMenu` configuration option to the admin navigation sidebar, providing a dedicated area for custom admin-level utilities.
- Multi-tenant plugin: Allows collection access control results to be overridden per operation via the new `accessResultOverride` callback.
- Multi-tenant plugin: Tenant field overrides now support `hasMany` relationships, enabling documents to belong to multiple tenants.
- Multi-tenant plugin: Introduces `usersAccessResultOverride` to customize access control on the users collection.
- Lexical Rich Text: UploadFeature now supports `disabledCollections` and `enabledCollections` to filter collections in the upload drawer.
- Lexical Rich Text: Blocks with `admin.jsx` now support client-side markdown shortcuts.
- Lexical Rich Text: Includes a pre-made `CodeBlock` component for use in `BlocksFeature`.
🐛 Bug Fixes
- Fixed `findDistinct` to work correctly by explicit ID paths in relationships and virtual fields.
- Resolved issue with hasMany / polymorphic relationships when targeting custom number IDs.
- Hidden fields with `read: false` are now correctly suppressed in list view columns, filters, and groupBy operations.
- Validated Point Field to enforce longitude between -180 and 180, and latitude between -90 and 90.
- Ensured URLs in upload sizes are properly encoded.
- Fixed validation failure when restoring trashed drafts that have empty required fields.
- SQLite: Added missing `blocksAsJSON` property.
- MongoDB: Resolved issue where documents were not showing in folders when `useJoinAggregations: false` was set.
- MongoDB: Improved check for `ObjectId`.
- GraphQL: Bumped `tsx` version to mitigate an esbuild vulnerability.
- Next.js integration: Fixed custom views not overriding built-in single-segment routes.
- Multi-tenant plugin: Fixed object reference mutations in `addFilterOptionsToFields`.
- Lexical Rich Text: Resolved state key collisions.
🔧 Affected Symbols
fallbackLocaleadmin.components.settingsMenumultiTenantPluginaccessResultOverrideusersAccessResultOverrideUploadFeatureCodeBlockfindDistinctPoint FieldtsxaddFilterOptionsToFields