v3.69.0
payloadcms/payloadv3.69.0Dec 19, 2025by denolfe
AI Summary
Introduces modular dashboard widgets and AI development resources, alongside fixes for multi-tenant and upload security.
Key Highlights
- Modular dashboards with draggable, resizable widgets.
- AI development resources (AGENTS.md) added to all templates.
- Improved upload security for PDFs and SVGs.
New Features
- Modular dashboards with widgets
- AI development resources (AGENTS.md) and cursor rules in templates
- Fix basePath not working properly with admin routes
- Improve upload security for PDFs and SVGs
- Fix multi-tenant relationTo arrays filter options
- Fix for lexical blocks feature relationship exposure
Full Release Notes
## [v3.69.0](https://github.com/payloadcms/payload/compare/v3.68.5...v3.69.0) (2025-12-19) ### ๐ Features * modular dashboards - widgets ([#13683](https://github.com/payloadcms/payload/issues/13683)) ([f111624](https://github.com/payloadcms/payload/commit/f111624)) * adds cursor rules and AGENTS.md to templates ([#14889](https://github.com/payloadcms/payload/issues/14889)) ([19fcf99](https://github.com/payloadcms/payload/commit/19fcf99)) --- #### Modular Dashboards with Widgets Introduces customizable admin dashboards with draggable, resizable widgets. Build personalized dashboard layouts with full keyboard accessibility for reordering and resizing. Future updates will add widget fields (props) for configurable widgets and dashboard presets for sharing layouts. [#13683](https://github.com/payloadcms/payload/pull/13683) https://github.com/user-attachments/assets/6c08d8d6-c989-4845-b56f-6d3fbd30b1af See the [RFC discussion](https://github.com/payloadcms/payload/discussions/11862) for background and roadmap. #### AI Development Resources (templates) All templates now ship with `AGENTS.md` and `.cursor/rules/` directory for improved AI-assisted development with tools like Copilot and Cursor. [#14889](https://github.com/payloadcms/payload/pull/14889) See more about [AGENTS.md](https://agents.md) ### ๐ Bug Fixes * basePath not working properly with admin routes ([#14967](https://github.com/payloadcms/payload/issues/14967)) ([fa6b503](https://github.com/payloadcms/payload/commit/fa6b503)) * get field by path for blocks ([#14984](https://github.com/payloadcms/payload/issues/14984)) ([519a3c6](https://github.com/payloadcms/payload/commit/519a3c6)) * improves upload security for PDFs and SVGs ([#14929](https://github.com/payloadcms/payload/issues/14929)) ([61298c6](https://github.com/payloadcms/payload/commit/61298c6)) * missing range headers ([#14887](https://github.com/payloadcms/payload/issues/14887)) ([ec7c192](https://github.com/payloadcms/payload/commit/ec7c192)) * **next:** status component incorrectly shows as published status on new documents saved as drafts when readVersions permissions are false ([#14950](https://github.com/payloadcms/payload/issues/14950)) ([394c024](https://github.com/payloadcms/payload/commit/394c024)) * **plugin-mcp:** adds collection and strategy to user ([#14981](https://github.com/payloadcms/payload/issues/14981)) ([042d7eb](https://github.com/payloadcms/payload/commit/042d7eb)) * **plugin-multi-tenant:** relationTo arrays inflating filterOptions where query size ([#14944](https://github.com/payloadcms/payload/issues/14944)) ([98b6791](https://github.com/payloadcms/payload/commit/98b6791)) * **richtext-lexical:** blocksFeature with relationship exposes other tenants ([#14985](https://github.com/payloadcms/payload/issues/14985)) ([3025377](https://github.com/payloadcms/payload/commit/3025377)) * **storage-s3:** encode filename in generated URL ([#14438](https://github.com/payloadcms/payload/issues/14438)) ([86855e1](https://github.com/payloadcms/payload/commit/86855e1)) * **ui:** use portals for popup to prevent clipping, improve keyboard navigation ([#14910](https://github.com/payloadcms/payload/issues/14910)) ([af09932](https://github.com/payloadcms/payload/commit/af09932)) ### ๐ Refactors * replace deprecated url.parse api usage ([#14980](https://github.com/payloadcms/payload/issues/14980)) ([446cbb1](https://github.com/payloadcms/payload/commit/446cbb1)) ### ๐ Documentation * fix duplicate anchor links ([#14976](https://github.com/payloadcms/payload/issues/14976)) ([4c91d04](https://github.com/payloadcms/payload/commit/4c91d04)) * update screenshot for fields/rich-text ([#14979](https://github.com/payloadcms/payload/issues/14979)) ([2117dbf](https://github.com/payloadcms/payload/commit/2117dbf)) ### ๐งช Tests * migrate to `vitest` ([#14337](https://github.com/payloadcms/payload/issues/14337)) ([4e45432](https://github.com/payloadcms/payload/commit/4e45432)) * move mongodb to different port to avoid port conflicts ([#14993](https://github.com/payloadcms/payload/issues/14993)) ([b4abd04](https://github.com/payloadcms/payload/commit/b4abd04)) * improve database test setup ([#14982](https://github.com/payloadcms/payload/issues/14982)) ([e3c512a](https://github.com/payloadcms/payload/commit/e3c512a)) * multi-tenant login tiles ([#14940](https://github.com/payloadcms/payload/issues/14940)) ([47f63fa](https://github.com/payloadcms/payload/commit/47f63fa)) ### ๐ก Chores * **storage-s3:** add int tests for filename encoding ([#14970](https://github.com/payloadcms/payload/issues/14970)) ([ef710e3](https://github.com/payloadcms/payload/commit/ef710e3)) ### ๐ค Contributors - Sasha (@r1tsuu) - Alessio Gravili (@AlessioGr) - Sean Zubrickas (@zubricks) - Jarrod Flesch (@JarrodMFlesch) - German Jablonski (@GermanJablo) - Kendell (@kendelljoseph) - Jake (@jacobsfletch) - Jessica Rynkar (@jessrynkar) - Paul (@paulpopus) - Jens Becker (@jhb-dev) - Patrik (@PatrikKozak)