v3.78.0
📦 payload-cmsView on GitHub →
✨ 8 features🐛 6 fixes🔧 6 symbols
Summary
This release stabilizes the Trash feature and introduces significant enhancements to the UI, including editable query presets and configurable dashboard widgets. It also adds a powerful TypeScript plugin for component path validation.
Migration Steps
- To use the new TypeScript plugin, add `@payloadcms/typescript-plugin` to your development dependencies (`pnpm add -D @payloadcms/typescript-plugin`) and configure your tsconfig.json plugins array.
- If you rely on the previous behavior of upload nodes being dropped during markdown conversion, update your Lexical markdown conversion logic, as upload nodes are now explicitly converted to links or placeholders.
- If you use the MCP plugin, note that virtual fields will no longer be included in input schemas for create/update operations.
✨ New Features
- Introduced typescript plugin for validating PayloadComponent import paths, offering IDE support like autocomplete and go-to-definition.
- Trash feature is now stable (out of beta), and delete access control can be granularly limited to distinguish between trashing (setting data.deletedAt) and permanent deletion.
- Dashboard widgets now support configurable fields, editable via a new drawer UI in dashboard editing mode, with full type generation for widget data.
- The @payloadcms/plugin-mcp is now stable (out of beta).
- Virtual fields (virtual: true) are automatically ignored and filtered out during create, update, and updateGlobal operations in the MCP plugin.
- Added markdown transformer for upload nodes in richtext-lexical, ensuring uploads are converted to markdown links/placeholders instead of being silently dropped.
- Added a new 'dashed' style variant for buttons in the UI, and updated button styling to use border instead of box-shadow.
- Query presets in the UI can now be created and edited directly from the document form view using a full WhereBuilder interface.
🐛 Bug Fixes
- Fixed crash in getFieldsToSign when user configuration is missing group or tab fields.
- Improved mobile touch support for drag and drop (dnd) interactions.
- Prevented silent data overwrites during concurrent edit operations.
- Ensured block metadata is preserved when using mergeLocalizedData and filterDataToSelectedLocales.
- The API now returns a 400 status code for malformed JSON request bodies.
- Fixed an issue where globals were not updating the updatedAt timestamp when saving drafts.