Skip to content

Releases: payloadcms/payload

v3.29.0

20 Mar 18:07
339226e
Compare
Choose a tag to compare

v3.29.0 (2025-03-20)

Important

This release upgrades the lexical dependency from 0.27.1 to 0.28.0.

If you installed lexical manually, update it to 0.28.0. Installing lexical manually is not recommended, as it may break between updates, and our re-exported versions should be used. See the yellow banner box for details.

If you still encounter richtext-lexical errors, do the following, in this order:

  1. Delete node_modules
  2. Delete your lockfile (e.g. pnpm-lock.json)
  3. Reinstall your dependencies (e.g. pnpm install)

🚀 Features

  • pass i18n through field label and description functions (#11802) (31211e9)
  • sort support for payload.update operation (#11769) (20e975b)
  • add find to payloadDataLoader to cache local API queries (#11685) (975bbb7)
  • distinct error for unverified email login (#11647) (fd99a30)
  • aligns user _strategy returned from API (#11701) (8a51fe1)
  • form state select (#11689) (9ea8a7a)
  • add forceSelect collection / global config property (#11627) (5e3d07b)
  • added support for conditional tabs (#8720) (878dc54)
  • db-*: support sort in db.updateMany (#11768) (e96d3c8)
  • db-*: allow to thread id to create operation data without custom IDs (#11709) (f442d22)
  • db-postgres: add vector raw column type (#10422) (11d7487)
  • plugin-form-builder: radio field (#11716) (427a5f1)
  • richtext-lexical: support escaping markdown characters (#11784) (43cdccd)
  • richtext-lexical: upgrade lexical from 0.27.2 to 0.28.0 (#11764) (240730f)
  • richtext-lexical: allow disabling TabNode (#11656) (013b515)
  • richtext-lexical: upgrade lexical from 0.27.1 to 0.27.2 (#11706) (adb42cb)
  • ui: don't trigger preventLeave when opening a new tab (#11683) (398607f)

🐛 Bug Fixes

  • add locale support to relationship filter options in WhereBuilder (#11783) (90f2491)
  • add locale support to relationship filter options in WhereBuilder (#11783) (39ad31a)
  • save button styles in edit-many modal (#11780) (7bc75e2)
  • wrap login redirect routes with encodeURIComponent (#11778) (a02e476)
  • email format validation with hyphens (#11761) (afe4432)
  • improves email validation format rules (#11757) (875afcc)
  • field appending on duplicate should ignore non string values (#11621) (74996fd)
  • passes id and data to read access func when accessing upload URLs (#11684) (4a712e1)
  • bulk upload validation when files are missing (#11744) (ea66e21)
  • ensures select & radio field option labels accept JSX elements (#11658) (3c92fbd)
  • add classes for picture tag in media component (#11605) (d66cdbd)
  • db-mongodb: spread version schema options correctly (#11793) (1d25b16)
  • plugin-cloud-storage: s3Storage client uploads working with more than 2 instances of the plugin (#11732) (bb39c87)
  • plugin-import-export: export with draft true (#11762) (67a7358)
  • plugin-import-export: translated preview labels (#11758) (e83f452)
  • plugin-multi-tenant: ensures redirect route is correctly formatted (#11753) (06aa940)
  • plugin-multi-tenant: missing key console message (#11693) (3d129e8)
  • richtext-lexical: error in admin panel when block collapsed preference is not an array (#11771) (b857273)
  • richtext-lexical: error in admin panel when setting a richtext field in useAsTitle (#11707) (ef527fe)
  • richtext-lexical: make the toolbar indent button consider the disabledNodes property on IndentFeature (#11739) (dd80f52)
  • richtext-lexical: unchecked list items were rendered as checked in html converter (#11747) (3f23160)
  • richtext-lexical: remove undefined rel and target attributes in link HTML converter (#11754) (aa3737c)
  • ui: adding guard check for populate docs in upload field (#11800) (7d9d067)
  • ui: bulk edit subfields (#10035) (b5fc8c6)
  • ui: excess error css coming from group fields (#11700) (0fe922e)
  • ui: fallback localization data was appearing in document (#11743) (ebfb0eb)
  • ui: scheduled publish not displaying the timezone's label and timezones being reset when scheduling a publish, brisbane is now a default timezone (#11699) (e0bf505)
  • ui: processing and initializing form does not disable standalone fields (#11714) (0b1a1b5)

⚡ Performance

  • use direct db calls in job-queue system (#11489) (032c424)
  • download only images and optimize image selection for upload list view, prioritize best-fit size (#11696) (6270d73)
  • ui: implements select in bulk edit (#11708) (d8bfb22)

🛠 Refactors

  • richtext-lexical: new plaintext and ...
Read more

v2.32.2

14 Mar 18:20
9c6ab39
Compare
Choose a tag to compare

2.32.2 (2025-03-14)

Bug Fixes

  • remove collapsible label prefix from the FieldSelect dropdown component (#10760) (a5e6ea5), closes #10757

v3.28.1

12 Mar 21:35
e8064a3
Compare
Choose a tag to compare

v3.28.1 (2025-03-12)

🐛 Bug Fixes

  • exclude plugin-cloud-storage, plugin-sentry and plugin-stripe from bundling optimization (#11673) (0fc70e0)
  • incorrect height rounding when resizing images with sharp (#11634) (9d6583d)
  • incorrect types for field Label, Description and Error server components (#11642) (88eeeaa)
  • storage-s3: ensure s3 sockets are cleaned up (#11626) (3f6699f)
  • translations: improve Swedish translations (#11654) (7be0219)
  • ui: form state infinite render (#11665) (b81358c)
  • ui: add RowLabelProvider context for blocks row labels (#11664) (4defa33)
  • ui: prevent fieldErrorsToast from showing empty errors list (#11643) (b44603b)

📚 Documentation

🧪 Tests

📝 Templates

🏡 Chores

🤝 Contributors

v3.28.0

11 Mar 21:18
d959d84
Compare
Choose a tag to compare

v3.28.0 (2025-03-11)

Important

Compilation Performance Improvements

We’ve introduced a new opt-in flag that can cut Payload’s compile times in half during development. To enable it, add the following to your next.config.js:

const nextConfig = {
  // ...
}

-export default withPayload(nextConfig)
+export default withPayload(nextConfig, { devBundleServerPackages: false })

In some rare cases, you may see unexpected behavior if your project relies on server-only Payload dependencies being bundled during development. Because of this, we’ve made the feature opt-in for existing projects.

Lexical Version Bump

This release upgrades the lexical dependency from 0.21.0 to 0.27.1. Alongside table improvements and bug fixes, this version bump lays the groundwork for frequently requested features like color pickers.

If you installed lexical manually, update it to 0.27.1. Installing lexical manually is not recommended, as it may break between updates, and our re-exported versions should be used. See the yellow banner box for details.

If you still encounter richtext-lexical errors, do the following, in this order:

  1. Delete node_modules
  2. Delete your lockfile (e.g. pnpm-lock.json)
  3. Reinstall your dependencies (e.g. pnpm install)

🚀 Features

  • defaults to noindex nofollow (#11623) (5285518)
  • threads path through field validate function (#11591) (3ede7ab)
  • allow specification of which JWT extraction methods are supported, and in which order (#10794) (8f6d2e7)
  • db-mongodb: strip keys from the data that don't exist in the schema from read results (#11558) (2ad035f)
  • next: fully expose Next.js metadata (#11593) (397c1f1)
  • richtext-lexical: allow disabling indentation for specific nodes (#11631) (eb09ce9)
  • richtext-lexical: upgrade lexical from 0.21.0 to 0.27.1 (#11564) (557ac99)
  • richtext-lexical: adds ability to disable auto link creation (#11563) (1e708bd)
  • richtext-lexical: new HTML converter (#11370) (36921bd)
  • ui: form state queues (#11579) (ac1e3cf)
  • ui: adds disable copy to locale option to collection config (#11546) (657ad20)

🐛 Bug Fixes

  • ensure only authenticated users can access the payload-locked-documents collection (#11624) (8f3d1bd)
  • upload imageSizes forces original file uploads to be compressed (#11612) (6d0924e)
  • add missing auth property to new defaults function (#11561) (3af0468)
  • db-mongodb: properly sanitize updateVersion read result (#11589) (e9afb36)
  • graphql: sanitize graphql field names for schema generation (#11556) (029cac3)
  • plugin-import-export: plugin breaks i18n configuration (#11590) (5d65cb0)
  • translations: update translation placeholders to not be translated for lithuanian (#11622) (85f88a0)
  • ui: adds fallback locale when defaultLocale is unavailable (#11614) (9ac7a3e)
  • ui: stale list thumbnails when navigating (#11609) (fc5876a)
  • ui: logic for showing copyToLocale button and adds test (#11584) (a53876d)
  • ui: upload.displayPreview should affect all previews in the admin panel (#11496) (6f90d62)
  • ui: apply consistent styling to custom & default block thumbnails (#11555) (8378654)
  • ui: incorrect error states (#11574) (4811531)

⚡ Performance

  • 50% faster compilation speed by skipping bundling of server-only packages during dev (#11594) (c7bb694)

🛠 Refactors

  • more reliable import map generation, supporting turbopack and tsconfig basePath (#11618) (243cdb1)

📚 Documentation

📝 Templates

  • fix issue with populateAuthors hook breaking live-preview on website template (#11608) (72efc84)
  • allow displaying dynamic error message on forms created via Form Builder plugin (#11275) (814ced4)

⚙️ CI

  • adjust paths filter for workflows, only look at main.yml (#11572) (9f7e8f4)
  • add canary nightly cron, adjust lock and stale crons (259ea6a)
  • use GITHUB_OUTPUT instead of set-output [skip ci] (1ad1de7)
  • canary and internal releases [skip ci] (#11565) (1797782)

🏡 Chores

  • set all licenses for internal tooling (30af889)
  • db-postgres: enable TypeScript strict (#11560) (c8f01e3)
  • deps: bump all eslint packages (#11629) (f2da72b)
  • deps: bump next.js from 15.2.0 to 15.2.1 in monorepo (#11576) (b0da85d)
  • deps: bumps @payloadcms/admin-bar in templates and examples (#11566) (7cef890)
  • ui: code/json field full height should include any padding added (#11607) (051c1fe)
  • ui: removes margin when row is empty and passes style from props (#11504) (6699844)

🤝 Contributors

v3.27.0

05 Mar 21:50
54acdad
Compare
Choose a tag to compare

v3.27.0 (2025-03-05)

🚀 Features

🐛 Bug Fixes

  • safe auth strategy execution (#11515) (312aa63)
  • beforeValidate deleting value when access returns false (#11549) (6939a83)
  • collection config deep merge during sanitization causing unpredictable behavior (#11524) (5adb764)
  • format admin url inside forgot pw email (#11509) (56dec13)
  • next: admin panel fails compiling when fullySpecified is set in next config (#11531) (cc05937)
  • richtext-lexical: fix bug in $createAutoLinkNode when the link is preceded by a textnode (#11551) (4ebe673)
  • storage-*: client uploads with disablePayloadAccessControl: true (#11530) (5cc0e74)
  • storage-gcs: client uploads are enabled even if clientUploads is not set (#11527) (e36ab6a)
  • ui: views rendered in drawers can update step nav (#11548) (04b0468)
  • ui: execute client upload handler only when file exists (#11538) (31e2179)

📚 Documentation

🧪 Tests

⚙️ CI

🏡 Chores

  • cleanup generated configs (#11536) (8f203bb)
  • indexes are not iterable, corrects indexes default value sanitization (#11534) (f0ea918)
  • add plugin-import-export to publishList release tool (#11535) (672dace)

🤝 Contributors

v3.26.0

04 Mar 15:08
1d16831
Compare
Choose a tag to compare

v3.26.0 (2025-03-04)

🚀 Features

  • ability to cancel jobs (#11409) (38131ed)
  • maintains column state in url (#11387) (3709950)
  • db-*: support limit in db.updateMany (#11488) (6a3d58b)
  • db-*: add updateMany method to database adapter (#11441) (41c7413)
  • richtext-lexical: add htmlToLexical helper (#11479) (cd29978)
  • richtext-lexical: add editorConfigFactory helper to streamline getting the editor config (#11467) (e1b3084)
  • ui: close the nav when the user navigates away on small screens (#10932) (9bb89b7)

🐛 Bug Fixes

  • avif images not converting to upload.formatOptions set file types (#11505) (c417e3a)
  • excludes index files from migration files filtering (#10722) (c828e33)
  • response headers from authstrategies are now merged together, even if no user was returned (#10883) (45a7c8b)
  • ensures req.origin includes port on localhost (#11454) (a65289c)
  • ensure errors returned from tasks are properly logged (#11443) (d53f166)
  • incorrect value inside beforeValidate field hooks (#11433) (b3e7a9d)
  • examples: ensure working multi-tenant example with pg (#11501) (4ddf965)
  • examples: replace depreciated 'mergeHeaders' import in the MultiTenant example (#11306) (48e613b)
  • next: incorrect active state for partial matches of collection names in sidebar (#11511) (7d2480a)
  • next: active nav item not clickable in edit view (#11457) (83b4548)
  • next: properly instantiates req.url on localhost (#11455) (67c4a20)
  • next: email verification not working due to incorrect token url parsing (#11439) (f3844ee)
  • next: disables active nav item (#11434) (c4bc0ae)
  • plugin-multi-tenant: scope access constraint to admin collection (#11430) (9c25e7b)
  • richtext-lexical: ensure nested forms do not use form element (#11462) (6d8aca5)
  • storage-*: ensure client handler is always added to the import map, even if the plugin is disabled (#11438) (dfddee2)
  • storage-s3, storage-azure, storage-gcs: client uploads when a collection has prefix configured (#11436) (fc42c40)
  • storage-uploadthing: files are duplicated to the storage via client uploads (#11518) (f143d25)
  • templates: handle enableLink condition safely (#10728) (f7f5651)
  • ui: uses query provider as single source of truth for where builder (#11476) (927078c)
  • ui: remove stale thumbnails in bulkUpload after partial success (#10651) (e75d38c)
  • ui: bulk editing users throws client-side exception (#11461) (6cbda9e)
  • ui: scope rah-static and progress-bar styles to payload-default layer (#11442) (bef98c8)
  • ui: use full image url for upload previews instead of thumbnail url (#11435) (96d1d90)
  • ui: locale selector in versions view should remove filtered locales (#11447) (9e97319)
  • ui: copyToLocale should not pass id in data, throws error in postgres (#11402) (428c133)
  • ui: duplicate basePath in Logout Button Link (#11432) (f7b1cd9)
  • ui: disable publish button if form is autosaving (#11343) (7118b64)

⚡ Performance

  • automatically add index on a relationship field when used as target for a join field (#11463) (90d3c65)
  • disable returning of db operations that don't need the return value (#11437) (6ce5e8b)
  • db-*: add option to disable returning modified documents in db methods (#11393) (c21dac1)
  • db-mongodb: faster join field aggregation by replacing mongoose-aggregate-paginate-v2 with a custom implementation (#10936) (d4d2bf4)
  • next: reduce initReq calls from 3 to 1 per page load (#11312) (c8c578f)

📚 Documentation

  • clarify that image resizing/cropping require sharp to be specified in payload config (#11470) (d57a786)
  • fix documentation "CheckListFeature" (#11480) (b9108b4)
  • add few notes about DocumentDB and Azure Cosmos DB (#11336) (25e8799)
  • fix method useAllFormFields on admin/hooks.mdx (#10935) (8b5bc3d)
  • use local API to upload a local file (#10839) (19b4ec2)
  • adds info and example for headersWithCors (#11141) (77395b6)
  • custom auth strategy requires the collection slug in return value (#11327) (fcaf591)
  • broken ' char entity instead of ' in plugins/build-your-own (#11363) (206b4b9)
  • replace HTML entity ' with literal apostrophe (#11321) (8b55e7b)

📝 Templates

  • fix vercel website template importmap error caused by missing import (#11500) (562acb7)
  • bump payload vers...
Read more

v3.25.0

27 Feb 17:12
bdf0113
Compare
Choose a tag to compare

v3.25.0 (2025-02-27)

🚀 Features

  • storage-*: large file uploads on Vercel (#11382) (b540da5)
  • allow to count related docs for join fields (#11395) (3436fb1)
  • add support for not_like operation (#11326) (b014416)
  • plugin-multi-tenant: allow customization of selector label (#11418) (958e195)
  • plugin-multi-tenant: filter users list and tenants lists (#11417) (45cee23)
  • plugin-multi-tenant: export useTenantSelection hook for public usage (#11364) (f477e0e)
  • richtext-lexical: allows client features to access components added to the import map by the server feature (#11414) (7e713a4)
  • richtext-lexical: support single-quoted jsx property values in mdx converter (#11290) (563c21b)
  • ui: threads row data through list drawer onSelect callback (#11339) (d766b19)
  • ui: adds support for block groups (#11239) (22f61ad)

🐛 Bug Fixes

  • ensure custom IDs are returned to the result when select query exists (#11400) (526e535)
  • ensure generated types for config.blocks are not undefined if no blocks defined (#11377) (820a6ec)
  • safely access config.blocks during type generation (#11320) (3ffc268)
  • working bin configuration for custom scripts (#11294) (f779e48)
  • db transaction errors caused by checkDocumentLockStatus (#11287) (9728d80)
  • db-mongodb: hasNextPage with polymorphic joins (#11394) (6b6c289)
  • deps: ensure Next.js 15.2.0 compatibility, upgrade nextjs and @types/react versions in monorepo (#11419) (2a3682f)
  • next: nested relationship filter options (#11375) (0a1af45)
  • next: use correct hmr url if assetPrefix is set in next config (#10859) (1725af5)
  • next: uses assetPrefix from next config in webpack-hmr URL (#11229) (26163a7)
  • plugin-multi-tenant: user access, thread field names through (#11365) (3778180)
  • plugin-nested-docs: fallback to empty string if useAsTitle field is undefined (#11338) (09ca514)
  • plugin-nested-docs: corrects data shape of breadcrumbs returned in hooks (#10866) (d92c000)
  • richtext-lexical: incorrect UploadData types (#11288) (2612756)
  • ui: skip bulk upload thumbnail generation on non-image files (#11378) (81fd42e)
  • ui: allow json fields to be updated externally (#11371) (36e152d)
  • ui: bulk upload DiscardWithoutSaving modal styles (#11381) (7bb1c9d)
  • ui: object type field labels not displaying in search filter (#11366) (f1b005c)
  • ui: custom block labels stale when reordering blocks (#11367) (2477fc6)
  • ui: link element triggering clicks twice (#11362) (f9121c1)
  • ui: only show bulk select all when count is less than total (#11329) (a8bec9a)
  • ui: confirmation modal should build off of drawerDepth, instead … (#11305) (460d50b)

⚡ Performance

  • remove deep copy of the entire sanitized entity config in configToJSONSchema (#11342) (a13d4fe)
  • add limit: 1 and pagination: false to various payload queries (#11319) (0058f82)
  • ensure fetching and updating preferences doesn't cause transaction errors and is done correctly (#11311) (845c647)
  • db-mongodb: remove JSON.parse(JSON.stringify) copying of results (#11293) (1dc748d)
  • drizzle: use faster, direct db query for getting id to update in updateOne (#11391) (e4712a8)
  • next: reduce getNavPrefs calls from 3 to 1 per page load (#11318) (c7c5018)
  • next: avoid unnecessary upsertPreferences call on page load (#11302) (76bd05c)

🛠 Refactors

📚 Documentation

  • adds Reserved Field Names section to migration guide (#11308) (bcc6857)
  • improve lexical code block documentation (#11416) (67b7a73)
  • add lexical docs for configuring jsx converters for internal links and overriding them (#11415) (88a2841)
  • add info about changes in localized fields to v2 -> v3 migration guide (#11244) (d326086)
  • fix links to react hooks (#11344) (4224c68)
  • update outdated docs/rich-text/overview feature names (#11324) (6ff380c)
  • fix formatting in field hooks table (#11300) (af92c15)
  • removes outdated rateLimit option (#11291) (c517e7e)
  • fix invalid jsx in banner block (#11289) (b1e9aa5)

🧪 ...

Read more

v3.24.0

19 Feb 18:44
f3161f9
Compare
Choose a tag to compare

v3.24.0 (2025-02-19)

🚀 Features

  • add support for interfaceName on radio and select fields to create reusable top level types (#11277) (acead10)
  • join field across many collections (#10919) (6d36a28)
  • add page query parameter for joins (#10998) (847d8d8)
  • view component types (#11126) (b80010b)
  • route transitions (#9275) (3f550bc)
  • add siblingFields arg to field hooks (#11117) (155f9f8)
  • richtext-lexical: export INSERT_BLOCK_COMMAND and INSERT_INLINE_BLOCK_COMMAND (#11193) (dc36572)
  • translations: add support for lithuanian (#11243) (8bbe7bc)
  • ui: enable specific css selectors on the localizer per locale (80b33ad)
  • ui: confirmation modal (#11271) (bd8ced1)
  • ui: adds admin.components.listMenuItems option (#11230) (8a2b712)
  • ui: add hideFileInputOnCreate and hideRemoveFile to collection upload config (#11217) (daaaa5f)
  • ui: refines progress bar animation curve (#11167) (16d75a7)

🐛 Bug Fixes

  • versions not loading properly (#11256) (0651ae0)
  • db transaction errors caused by checkDocumentLockStatus (#11273) (9b8f8d7)
  • localized fields within block references were not handled properly if any parent is localized (#11207) (e6fea1d)
  • upload and auth endpoints are mounted for all collections (#11231) (749962a)
  • populate is ignored for nested relationships (#11227) (938472b)
  • ensure leavesFirst option works correctly in traverseFields utility (#11219) (6b9d81a)
  • join field does not show validation error (#11170) (dd28959)
  • db-mongodb: properly handle document notfound cases for update and delete operations (#11267) (7922d66)
  • db-mongodb: remove duplicative indexing of timestamps (#11028) (12f51ba)
  • db-postgres: querying other collections via relationships inside blocks (#11255) (88548fc)
  • db-postgres: ensure countDistinct works correctly and achieve better performance when the query has table joins (#11208) (513ba63)
  • next: imports toast from @payloadcms/ui (#11279) (cd48904)
  • next: document header padding on tablet sized screens (#11192) (70db44f)
  • next: pre-flight OPTIONS request errors from the graphql endpoint (#11103) (ececa65)
  • plugin-multi-tenant: corrects default value for tenantsArrayTenantFieldName (#11189) (b65ae07)
  • plugin-seo: add missing supported languages (#11254) (74ce889)
  • richtext-lexical: add container div to table element to allow horizontal scroll in HTML and JSX converters (#11119) (9068bda)
  • richtext-lexical: reliably install exact lexical version by removing it from peerDeps (#11122) (2056e9b)
  • richtext-lexical: unindent button in toolbar is never active (#11089) (7a400a7)
  • ui: minor issues with tabs and publish buttons when in RTL (#11282) (e83318b)
  • ui: turbopack with the latest next.js canary [skip lint] (#11280) (009e908)
  • ui: disabledLocalStrategy.enableFields missing email/username fields (#11232) (9fc1cd0)
  • ui: unsaved changes allows for scheduled publish missing changes (#11001) (618624e)
  • ui: timezone issue related to date only fields in Pacific timezones (#11203) (8b0ae90)
  • ui: database errors when running autosave and ensure autosave doesn't run unnecessarily (#11270) (1328522)
  • ui: do not pass req in handleFormStateLocking (#11269) (7f5aaad)
  • ui: issues with prevent leave and autosave when the form is submitted but invalid (#11233) (06debf5)
  • ui: allow selectinputs to reset to their initial values if theres no provided value (#11252) (1c4eba4)
  • ui: selection status not updating after toggleAll in useSelection hook (#11218) (5817b81)
  • ui: properly handle singular and plural bulk edit labels (#11198) (779f511)
  • ui: hide edit button on deleted relationship options (#11005) (cba5c7b)
  • ui: respect locale in buildTableState (#11147) (077fb3a)
  • ui: hide array field "add" button if admin.readOnly: true is set (#11184) (b1734b0)
  • ui: unable to use browser back navigation after visiting list view (#11172) (0a3820a)
  • ui: url encode imageCacheTag for media on dashboard (#11164) (d47c980)
  • ui: json schema (#11123) (7f124cf)
  • ui: prevent omitting fileSize from non-images (#11146) (6901b26)
  • ui: adds delay to progress bar for fast networks (#11157) (de68ef4)
  • ui: safe call within useEffect tea...
Read more

v3.23.0

11 Feb 18:00
480c6e7
Compare
Choose a tag to compare

v3.23.0 (2025-02-11)

🚀 Features

🐛 Bug Fixes

  • set initialValues alongside values during onSuccess (#10825) (fde526e)
  • unhelpful "cannot overwrite model once compiled" errors swallowing actual error (#11057) (6a99677)
  • error when passing functions to array or block fields labels property (#11056) (6d48cf9)
  • db-mongodb: ensures same level operators are respected (#11087) (d2fe9b0)
  • db-postgres: incorrect pagination results when querying hasMany relationships multiple times (#11096) (98fec35)
  • next: allows relative live preview urls (#11083) (91a0f90)
  • payload-cloud: handle socket closures (#11113) (da77f99)
  • richtext-lexical: improve keyboard navigation on DecoratorNodes (#11022) (fa18923)
  • richtext-lexical: toggling between internal and custom links does not update fields (#11074) (9fb7160)
  • richtext-lexical: fixed the positioning of the button to add columns or rows in tables (#11050) (886bd94)
  • storage-s3: sockets not closing (#11015) (95ec575)
  • ui: relationship filter renders stale values when changing fields (#11080) (da6511e)
  • ui: incorrectly incrementing version counts if maxPerDoc is set to 0 (#11097) (3616818)

📚 Documentation

  • update custom endpoints docs, handler does not accept array of functions anymore (#11110) (1f3ccb8)
  • adds options table to payload-wide upload options (#10904) (d6a03ee)
  • fixing 3 dead internal links (#11100) (3f80c59)
  • adds usePayloadAPI hook to React Hooks documentation (#11079) (d56de79)
  • fix typo in BlockquoteFeature name (#11078) (87ba7f7)
  • typo in jobs queue workflows (#11063) (dc56acb)
  • plugin-multi-tenant: update tenantsArrayField config options (#11045) (ac6f4e2)

📝 Templates

🏡 Chores

🤝 Contributors

v3.22.0

07 Feb 14:29
a80c6b5
Compare
Choose a tag to compare

v3.22.0 (2025-02-07)

🚀 Features

  • ui: adds filtering config option and implementation for filtering a… (#11007) (a63a3d0)
  • ui: improve hasMany TextField UX (#10976) (d8cfdc7)

🐛 Bug Fixes

  • db-postgres: ensure globals have createdAt, updatedAt and globalType fields (#10938) (57143b3)
  • db-postgres: select hasMany: true with autosave doesn't work properly (#11012) (3ad56cd)
  • next: viewing modified-only diff view containing localized arrays throws error (#11006) (09721d4)
  • plugin-multi-tenant: correctly set doc default value on load (#11018) (f25acb8)
  • richtext-lexical: duplicative error paths in validation (#11025) (2b76a04)
  • richtext-lexical: ensure sub-fields have access to full document data in form state (#9869) (ae32c55)
  • ui: removing final condition closes where builder (#11032) (b820a75)
  • ui: clearing value from relationship filter leaves stale query (#11023) (7a73265)
  • ui: relationship filter clearing on blur (#11021) (8940726)
  • ui: improve useIgnoredEffect hook (#10961) (8ed4104)
  • ui: allow schedule publish to be accessed without changes (#10999) (bdbb999)
  • ui: apply cacheTags upload config property to other admin panel image components (#10801) (e29ac52)

🛠 Refactors

  • do not use description functions for generated types JSDocs (#11027) (8b6ba62)

🧪 Tests

🏡 Chores

🤝 Contributors