v3.20.0 (2025-01-29)
🚀 Features
- allow publish and publish specific locale buttons to be swapped (#9438) (9b49741)
- allows fields to be collapsed in the version view diff (#8054) (828b3b7)
- ui: allows customizing version diff components, render versions ui on the server (#10815) (c562fbf)
- ui: toggle showing only modified fields in version diff view (#10807) (33ac13d)
🐛 Bug Fixes
- checks for localization to prevent publish button breaking (#10844) (9c31a52)
- field paths within hooks (#10638) (0acaf8a)
- next: remove toString coercion inside getDocumentPermissions (#10828) (9f9919d)
- plugin-form-builder: type of MessageField to object (#10792) (92e6beb)
- plugin-form-builder: type of MessageField to SerializedEditorState (#10789) (5603c1c)
- plugin-multi-tenant: issue #10740 - "The following field is invalid: Assigned Tenant" (#10764) (c1c64a0)
- plugin-multi-tenant: remove tenant cookie on logout (#10761) (22633a6)
- plugin-nested-docs: update draft and published child docs on resave (#10454) (7a39870)
- richtext-lexical: preserve selection in Firefox when using LexicalMenu (#10867) (0e5ff24)
- richtext-lexical: afterRead hooks were not awaited (#10747) (9f2bca1)
- translations: adds et to import file (#10823) (ffe8020)
- ui: adds title attribute to Logout button for tooltip (#10851) (989140b)
- ui: correctly reset blocksDrawer search state after close (#10847) (8a6d995)
- ui: adds prev value on form state validat functions (#10832) (a835518)
- ui: hide the restore button's empty submenu in a draft version (#10756) (0d81ff2)
- ui: include check for parent permissions in renderField (#10729) (8289588)
⚡ Performance
- skips field validations until the form is submitted (#10580) (82f1bb9)
- only validate filter options on submit (#10738) (a05240a)
📚 Documentation
- add missing full stop, fix SlateNodeConverter import (#10860) (a47139a)
- fix links and formatting (#10835) (8952662)
- fix typo (#10824) (95e81d8)
- improvements in rich text section (#9954) (6a39279)
- adds limit, page, sort, where, and joins to list of rest query params (#10751) (ec1a441)
📝 Templates
- fix compatibility with pnpm 10 (#10830) (3094c92)
- fix website template not building (#10858) (219a369)
- adds landing page to blank template (#10769) (e65a04a)
- ensure lexical link validation does not break for internal links (#10771) (59545b5)
⚙️ CI
- remove docker login, not functional for external contributors (eca4f47)
- update CODEOWNERS (d6ae07d)
- fix run e2e command (#10779) (344b231)
🏡 Chores
- improves routeError log safety (#10793) (ace7557)
- uncomment collectionSlugs array in fields test suite, for resetDB to work properly (#10778) (72a5c02)
- migrate outdated @payloadcms/next/utilities imports (#10777) (b9d3250)
- disable bun run test buttons if bun extension is installed (#10775) (03f7bdf)
- cpa: re-pin template versions (#10857) (c08f012)
- deps: upgrades react-diff-viewer-continued to v4.0.4 to suppress react 19 warnings and use ESM imports (#10834) (57f7218)
- templates: update missing changes in vercel website template (#10827) (c75c6ce)
- templates: fix eslint errors in vercel templates (#10768) (52f86c7)
- templates: fix: the contact page of the website template throws an error in live preview (#10785) (d6658b5)
- templates: fix eslint errors in plugin template (#10770) (b76401c)
🤝 Contributors
- Germán Jabloñski (@GermanJablo)
- Sasha (@r1tsuu)
- Elliot DeNolf (@denolfe)
- Seno (@s-en-o)
- Alessio Gravili (@AlessioGr)
- Tsemach Hadad (@tsemachh)
- Dan Ribbens (@DanRibbens)
- Patrik (@PatrikKozak)
- Said Akhrarov (@akhrarovsaid)
- Jacob Fletcher (@jacobsfletch)
- Jessica Chowdhury (@JessChowdhury)
- Jarrod Flesch (@JarrodMFlesch)
- Tib (@T1l3)
- felismargarita (@felismargarita)
- Wallerand Delevacq (@wallforfry)
- James Mikrut (@jmikrut)
- Francisco Lourenço (@franciscolourenco)