v3.61.0
payloadcms/payloadv3.61.0Oct 23, 2025by denolfe
AI Summary
This release releases the MCP plugin (BETA) and fixes various bugs related to Lexical editor behavior, blocks access control, and form builder submissions.
Key Highlights
- Release of @payloadcms/plugin-mcp (BETA)
- Fix blocks access control not respecting update access
- Lexical editor improvements (node replacements, shortcuts)
New Features
- Release of @payloadcms/plugin-mcp (BETA)
- Fix blocks access control not respecting update access
- Allow slugField to accept localized argument
- Fix drizzle folders with trash enabled
- Display full textarea content in form submissions
- Fix block references issue in plugin-multi-tenant
Full Release Notes
## [v3.61.0](https://github.com/payloadcms/payload/compare/v3.60.0...v3.61.0) (2025-10-23) ### 🚀 Features - **@payloadcms/plugin-mcp Released (BETA)** - New plugin that enables Payload to function as an MCP server, allowing AI models to interact with your collections through a standardized protocol. The plugin provides built-in tools for CRUD operations on collections and supports custom tools. [#13674](https://github.com/payloadcms/payload/pull/13674) - [MCP Documentation](https://payloadcms.com/docs/plugins/mcp) - [GitHub Discussion for feedback](https://github.com/payloadcms/payload/discussions/14318) ### 🐛 Bug Fixes * user updatedAt modified during session operations ([#14269](https://github.com/payloadcms/payload/issues/14269)) ([a1671ec](https://github.com/payloadcms/payload/commit/a1671ec)) * document header text clipping ([#14291](https://github.com/payloadcms/payload/issues/14291)) ([db973e9](https://github.com/payloadcms/payload/commit/db973e9)) * typescript requires fields when draft: true despite passing `draft: true` ([#14271](https://github.com/payloadcms/payload/issues/14271)) ([1016cd0](https://github.com/payloadcms/payload/commit/1016cd0)) * blocks access control not respecting update access whether on collection or on a per field basis ([#14226](https://github.com/payloadcms/payload/issues/14226)) ([88cb687](https://github.com/payloadcms/payload/commit/88cb687)) * allow slugField to accept localized argument and fixed slug generation with custom field names ([#14234](https://github.com/payloadcms/payload/issues/14234)) ([2ced43d](https://github.com/payloadcms/payload/commit/2ced43d)) * **db-postgres:** limit index and foreign key names length ([#14236](https://github.com/payloadcms/payload/issues/14236)) ([a63b4d9](https://github.com/payloadcms/payload/commit/a63b4d9)) * **drizzle:** folders with trash enabled don't display documents in polymorphic joins ([#14223](https://github.com/payloadcms/payload/issues/14223)) ([6d3aaaf](https://github.com/payloadcms/payload/commit/6d3aaaf)) * **plugin-form-builder:** display full textarea content in form submissions ([#14161](https://github.com/payloadcms/payload/issues/14161)) ([24dad01](https://github.com/payloadcms/payload/commit/24dad01)) * **plugin-multi-tenant:** block references issue ([#14320](https://github.com/payloadcms/payload/issues/14320)) ([4f8b7d2](https://github.com/payloadcms/payload/commit/4f8b7d2)) * **plugin-search:** exclude skipped drafts in reindex handler ([#14224](https://github.com/payloadcms/payload/issues/14224)) ([0dc782c](https://github.com/payloadcms/payload/commit/0dc782c)) * **richtext-lexical:** ensure block node form displays up-to-date value when editor remounts ([#14295](https://github.com/payloadcms/payload/issues/14295)) ([f8e6b65](https://github.com/payloadcms/payload/commit/f8e6b65)) * **richtext-lexical:** node replacements ignored for block, inline block, upload, unknown and relationship nodes ([#14249](https://github.com/payloadcms/payload/issues/14249)) ([1561853](https://github.com/payloadcms/payload/commit/1561853)) * **richtext-lexical, ui:** ui errors with Slash Menu in Lexical and SearchBar component in RTL ([#14231](https://github.com/payloadcms/payload/issues/14231)) ([fed3bba](https://github.com/payloadcms/payload/commit/fed3bba)) * **ui:** document locked modal blocks interaction after clicking Go Back ([#14287](https://github.com/payloadcms/payload/issues/14287)) ([5782a41](https://github.com/payloadcms/payload/commit/5782a41)) * **ui:** change password button being hidden and unlock button being shown incorrectly on account page ([#14220](https://github.com/payloadcms/payload/issues/14220)) ([bcb4d8e](https://github.com/payloadcms/payload/commit/bcb4d8e)) ### ⚡ Performance * **richtext-lexical:** decrease size of field schema, minor perf optimizations ([#14248](https://github.com/payloadcms/payload/issues/14248)) ([e25ce1c](https://github.com/payloadcms/payload/commit/e25ce1c)) * **richtext-lexical:** do not return i18n from editor adapter ([#14228](https://github.com/payloadcms/payload/issues/14228)) ([54224c3](https://github.com/payloadcms/payload/commit/54224c3)) ### 🛠 Refactors * **richtext-lexical:** ensure classNames of all nodes can be customized ([#14294](https://github.com/payloadcms/payload/issues/14294)) ([e1ef1d2](https://github.com/payloadcms/payload/commit/e1ef1d2)) ### 📚 Documentation * improve slate to lexical migration docs ([#14309](https://github.com/payloadcms/payload/issues/14309)) ([6838c56](https://github.com/payloadcms/payload/commit/6838c56)) * db indexes - code example missing const ([#14171](https://github.com/payloadcms/payload/issues/14171)) ([3b37f4a](https://github.com/payloadcms/payload/commit/3b37f4a)) * add explanation about re-renders in `useFormFields` ([#14288](https://github.com/payloadcms/payload/issues/14288)) ([8cdb5dc](https://github.com/payloadcms/payload/commit/8cdb5dc)) * add jsdocs to RichText adapter ([#14246](https://github.com/payloadcms/payload/issues/14246)) ([8b0ac01](https://github.com/payloadcms/payload/commit/8b0ac01)) * clarify `admin.timezones` list configuration with example ([#14238](https://github.com/payloadcms/payload/issues/14238)) ([de5f3db](https://github.com/payloadcms/payload/commit/de5f3db)) * fix link to slug-overrides in text.mdx ([#14211](https://github.com/payloadcms/payload/issues/14211)) ([8136a84](https://github.com/payloadcms/payload/commit/8136a84)) * add mention of the useUploadHandlers error and steps to remedy it with a mention to monorepos ([#14233](https://github.com/payloadcms/payload/issues/14233)) ([8663024](https://github.com/payloadcms/payload/commit/8663024)) ### 🔨 Build * add plugin-mcp to publishList ([#14319](https://github.com/payloadcms/payload/issues/14319)) ([894cf0c](https://github.com/payloadcms/payload/commit/894cf0c)) * add README sync for top-level -> packages/payload ([#14316](https://github.com/payloadcms/payload/issues/14316)) ([2aba827](https://github.com/payloadcms/payload/commit/2aba827)) ### 🏡 Chores * extract snapshot logic, correct types in version ops ([#14290](https://github.com/payloadcms/payload/issues/14290)) ([c2dcd12](https://github.com/payloadcms/payload/commit/c2dcd12)) * bump pino to v9.14.0 and pino-pretty ([#14283](https://github.com/payloadcms/payload/issues/14283)) ([b252658](https://github.com/payloadcms/payload/commit/b252658)) * refresh CLAUDE.md ([#14268](https://github.com/payloadcms/payload/issues/14268)) ([05a869d](https://github.com/payloadcms/payload/commit/05a869d)) * cleanup, short-circuit .split calls ([#14245](https://github.com/payloadcms/payload/issues/14245)) ([d57be12](https://github.com/payloadcms/payload/commit/d57be12)) ### 🤝 Contributors - Jarrod Flesch (@JarrodMFlesch) - Elliot DeNolf (@denolfe) - Kendell (@kendelljoseph) - Alessio Gravili (@AlessioGr) - Patrik (@PatrikKozak) - Boyan Bratvanov (@bratvanov) - Paul (@paulpopus) - German Jablonski (@GermanJablo) - Bogdan Covrig (@bogdaaamn) - Romain Pironneau (@romainpi) - Sasha (@r1tsuu) - Ahmed Abdellahi Abdat (@ahmed-abdat) - Said Akhrarov (@akhrarovsaid)