Skip to content

Releases: payloadcms/payload

v3.39.1

22 May 15:44
9ef51a7
Compare
Choose a tag to compare

v3.39.1 (2025-05-22)

🐛 Bug Fixes

📚 Documentation

📝 Templates

🤝 Contributors

v3.39.0

22 May 14:23
c1c0db3
Compare
Choose a tag to compare

v3.39.0 (2025-05-22)

🚀 Features

📁 Folders (#10030) (00667fa)

Folders allow you to organize your documents in a more manageable way. Now you can enable folders on a per-collection basis and from there start adding folders from within the admin panel (or via the API). Once you have folders enabled you can then start organizing. You can create folders and store documents across multiple collection types and then view them either in the collection "By Folder" or in the global "Browse by Folder" view.

CleanShot.2025-05-21.at.21.49.16.mp4
  • show fields inside groups as separate columns in the list view (#7355) (2a41d3f)
  • plugin-form-builder: add new date field (#12416) (4dfb2d2)
  • richtext-lexical: add TextStateFeature (allows applying styles such as color and background color to text) (#9667) (fc83823)
  • ui: extracts relationship input for external use (#12339) (88769c8)

🐛 Bug Fixes

  • auto inject req.user into query preset constraints (#12461) (22b1858)
  • telemetry in opennext cloudflare (#12327) (2ab8e2e)
  • prevent resizing of original file with withoutEnlargement on update (#12291) (1235a18)
  • incorrect environment file loading (#12360) (1425269)
  • sanitize duplicate blocks (#12440) (5855f3a)
  • orderable with groups and tabs requires migration (#12422) (529bfe1)
  • respect hidden: true for virtual fields that have reference to a relationship field (#12219) (1f6efe9)
  • cpa: ensure it always installs the latest version of the templates (#12488) (898e97e)
  • db-*: ensure consistent sorting even when sorting on non-unique fields or no sort parameters at all (#12447) (72ab319)
  • db-mongodb: remove limit from nested querying (#12464) (230128b)
  • db-postgres: allow the same block slug in different places with a different localized value (#12414) (219fd01)
  • plugin-import-export: add translations for all UI elements and fields (#12449) (3127d6a)
  • plugin-multi-tenant: multi-locale tenant select label (#12444) (4fe3423)
  • plugin-multi-tenant: add missing translation for Assigned Tenant field (#12448) (e8c2b15)
  • plugin-seo: fix genImageResponse result parsing (#12301) (cead312)
  • richtext-lexical: support inline block types in strict mode for JSXConvertersFunction type (#12478) (8596ac5)
  • templates: make images visible in live preview if it is not running on port 3000 (#12432) (d4899b8)
  • ui: set gap to 0 in sort column buttons to remove unneeded spacing (#12481) (c772a32)
  • ui: render missing group children fields for unnamed group (#12433) (6fb2beb)
  • ui: req not being threaded through to views (#12213) (bd6ee31)

⚡ Performance

📚 Documentation

  • update rich text to HTML conversion documentation (#12465) (c701dd4)
  • fix API capitalization typo in virtual fields documentation (#12477) (324daff)

🧪 Tests

  • add test for sorting by a virtual field with a reference (#12351) (81d333f)

📝 Templates

🏡 Chores

  • simplifies buildColumnState functions (#12496) (8142a00)
  • ignore .idea run configuration templates (#12439) (23f4204)
  • fix all lint errors and add mechanisms to prevent them from appearing again (#12401) (2a929cf)
  • add ignores .next folder in eslint config for templates template (#12423) (e395a0a)
  • drizzle: fix lint errors in @payloadcms/drizzle (#12428) (38029cd)
  • live-preview: load schemaJSON from proper client config in integration tests (#12167) (08a3dfb)

🤝 Contributors

v3.38.0

15 May 18:45
5617087
Compare
Choose a tag to compare

v3.38.0 (2025-05-15)

🚀 Features

  • add latvian language support (#12363) (77bb7e3)
  • allow group fields to have an optional name (#12318) (e258cd7)
  • prevent query preset lockout (#12322) (9779cf7)
  • thread overrideAccess through field validations (#12399) (7130834)
  • plugin-multi-tenant: prompt the user to confirm the change of tenant before actually updating (#12382) (faa7794)
  • storage-s3: presigned URLs for file downloads (#12307) (800c424)
  • ui: fixed toolbar group customization (#12108) (b7b2b39)
  • ui: display the actual error message on unpublish if available (#11898) (b3cac75)

🐛 Bug Fixes

  • db-mongodb: sort by fields in relationships with draft: true (#12387) (fd67d46)
  • db-mongodb: localized dates being returned as date objects instead of strings (#12354) (c43891b)
  • db-postgres: build near sort query properly for point fields (#12240) (58fc2f9)
  • db-postgres: dbName in arrays regression with long generated drizzle relation names (#12237) (5fce501)
  • db-postgres: v2-v3 migration errors with relation already exists (#12310) (3edfd7c)
  • db-postgres: ensure module augmentation for generated schema is picked up correctly in turborepo (#12312) (98283ca)
  • db-postgres: selectDistinct might remove expected rows when querying with nested fields or relations (#12365) (8219c04)
  • drizzle: improve db push schema comparison (#12193) (7266225)
  • next: tells webpack not to bundle the require-in-the-middle pkg (#12417) (7498d09)
  • plugin-cloud: ensure scheduled publishing works if no custom jobs are defined (#12410) (d63c8ba)
  • richtext-lexical: newTab not being able to be checked to true by default (#12389) (3e7db30)
  • ui: respect filterOptions: { id: { in: [] } } (#12408) (8ebadd4)
  • ui: passes value to server component args (#12352) (d9c0c43)

⚡ Performance

  • remove duplicative deep loops during field sanitization (#12402) (93d79b9)
  • actually debounce rich text editor field value updates to only process latest state (#12086) (1d5d96d)

📚 Documentation

  • remove link to outdated ecommerce template from stripe plugin docs (#12353) (cd45574)
  • add local api instructions for vercel content link (#12385) (a9cc747)
  • add pagination and limit: 0 information in pagination for API docs (#12243) (05ae957)

📝 Templates

🏡 Chores

  • add NODE_OPTIONS to vscode settings by default in the repo for playwright extension (#12390) (e93d0ba)
  • add no-frozen-lockfile flag for templates script (#12394) (735d699)
  • bump node version in monorepo and add new flag for node 23.6+ (#12328) (021932c)
  • plugin-stripe: enable TypeScript strict (#12303) (edeb381)

🤝 Contributors

v2.32.3

08 May 18:20
f8ec6a7
Compare
Choose a tag to compare

2.32.3 (2025-05-08)

Bug Fixes

  • filter state resetting when removing previous condition in WhereBuilder (#12262) (a09fefa)
  • upload: ensure only image files are read for preview (#9562) (5ecee3f), closes #9559

v3.37.0

05 May 19:17
9a6bb44
Compare
Choose a tag to compare

v3.37.0 (2025-05-05)

🚀 Features

  • exports additional login helper utils (#12309) (dcd4e37)
  • live-preview: expose requestHandler to subscribe.ts (#10947) (35c0404)
  • ui: update RelationshipFilter if only filterOptions are changed (#11985) (446938b)
  • ui: add document link to drawer (#12036) (292b462)
  • ui: add option to open related documents in a new tab (#11939) (1ef1c55)
  • ui: make select and relationship field placeholder configurable (#12253) (e568391)
  • ui: allow array fields to be filtered in list view (#11925) (78d3af7)

🐛 Bug Fixes

  • allow custom admin user collection in query presets constraints (#12202) (b9868c4)
  • cpa: overwrites existing env variables (#10636) (e5b28c9)
  • db-*: migration batch not incrementing past 1 (#12215) (3c9ee5d)
  • db-postgres: start transaction in v2-v3 migration only after drizzle prompts to avoid timeout (#12302) (2628b43)
  • graphql: nextPage and prevPage are non nullable even though they can be null sometimes (#12201) (3fb81ef)
  • graphql: population of joins that target relationship fields that have relationTo as an array (#12289) (c08c707)
  • plugin-cloud-storage: missing 'prefix' in cloud storage plugin (#11970) (0d10f43)
  • plugin-multi-tenant: make tenant selector respect order if orderable enabled for tenant collection (#12314) (a6d76d6)
  • richtext-lexical: add missing line-breaks to plaintext conversion (#11951) (ddf40d5)
  • ui: unable to search for nested fields in WhereBuilder field selection (#11986) (3818634)
  • ui: blockType ignored when merging server form state (#12207) (a62cdc8)
  • ui: fix version list status for unpublished documents (#11983) (b6b02ac)

📚 Documentation

  • fix typo in fields/relationship.mdx (#12306) (055a263)
  • repair blank template markdown link in installation docs (#12297) (5365d4f)

🏡 Chores

  • live-preview: enable TypeScript strict (live-preview-vue) (#12299) (b480f81)
  • live-preview-react: enable TypeScript strict (#12298) (11018eb)
  • storage-uploadthing: enable TypeScript strict (#12304) (d7d3744)

🤝 Contributors

v3.36.1

30 Apr 18:58
cfe8c97
Compare
Choose a tag to compare

v3.36.1 (2025-04-30)

🐛 Bug Fixes

  • duplicate with orderable (#12274) (710fe09)
  • virtual relationship fields with select (#12266) (564fdb0)
  • update email regex to support special characters (#12181) (8fee016)
  • db-postgres: count crashes when query contains subqueries and doesn't return any rows (#12273) (4a56597)
  • plugin-import-export: csv export column order (#12258) (47a1eee)
  • richtext-lexical: ensure state is up-to-date on inline-block restore (#12128) (1b17df9)

⚡ Performance

🤝 Contributors

v3.36.0

29 Apr 16:43
3df1329
Compare
Choose a tag to compare

v3.36.0 (2025-04-29)

🚀 Features

  • add beforeDocumentControls slot to allow custom component injection next to document controls (#12104) (d553069)
  • add showSaveDraftButton option to show draft button with autosave enabled (#12150) (34ea6ec)

🐛 Bug Fixes

  • user validation error inside the forgotPassword operation in the cases where user had localised fields (#12034) (c85fb80)
  • db-mongodb: fallback version when not selected (#12158) (6dc61ae)
  • db-postgres: sort by distance when the near operator is used (#12185) (9955818)
  • examples: incorrect documentation links for Live Preview example (#12233) (ab03f4f)
  • next: pg-cloudflare build issue (#12242) (2157450)
  • plugin-search: delete does not also delete the search doc (#12148) (df7a369)
  • richtext-lexical: prevent extra paragraph when inserting blocks or uploadNodes. Add preemptive selection normalization (#12077) (5492542)
  • richtext-lexical: allow to indent and outdent if at least one selected node allows it (#12182) (9b1dd2a)
  • richtext-lexical: reset indent on node transforms (#12183) (2c20051)
  • ui: copyToLocale should not pass any id's to avoid duplicates (#11887) (34ead72)
  • ui: relationship using list drawer correctly updates when hasMany is true (#12176) (5bd852c)
  • ui: reflect default sort in join tables (#12084) (b750ba4)

⚡ Performance

  • optimize virtual fields that reference ID (#12159) (fdff587)
  • graphql: skip count query for join field using simple pagination (#12223) (6b83086)
  • plugin-nested-docs: remove extra find call (#12224) (2f21d46)
  • plugin-search: reduce query depth in hooks (#12225) (caae598)
  • ui: only select necessary data for relationship options (#12251) (9948040)

🛠 Refactors

  • translations: improvements for german translations (#11807) (92380bf)

📚 Documentation

  • adds warning about handling different environments with migrations (#12249) (b7ae4ee)
  • fix query preset config link (#12156) (034a267)
  • virtual fields linking with relationship fields (#12145) (d91478c)

🤝 Contributors

v3.35.1

17 Apr 15:09
17d5168
Compare
Choose a tag to compare

v3.35.1 (2025-04-17)

🐛 Bug Fixes

🏡 Chores

  • db-postgres: improve table name length exceeded error message (#12142) (0a59707)

🤝 Contributors

  • Jessica Chowdhury (@JessChowdhury)
  • Sasha (@r1tsuu)

v3.35.0

16 Apr 19:59
bcbb912
Compare
Choose a tag to compare

v3.35.0 (2025-04-16)

🚀 Features

  • queriable / sortable / useAsTitle virtual fields linked with a relationship field (#11805) (1c99f46)
  • threads operation through field condition function (#12132) (c877b1a)
  • adds and exports reusable auth server functions (#11900) (6b34937)
  • db-postgres: dependency inject pg to allow Sentry instrumentation (#11478) (da7be35)
  • ui: add option for rendering the relationship field as list drawer (#11553) (55d00e2)
  • ui: use defaultDepth in API view (#11950) (b354d00)

🐛 Bug Fixes

  • respects boolean query preset constraints (#12124) (a675c04)
  • ensures cors headers are run against custom endpoints (#12091) (e79b203)
  • reordering draft documents causes data loss (#12109) (e90ff72)
  • correct typo in error message and remove console.log (#12082) (a9eca3a)
  • db-postgres: use correct export path for codegen in createSchemaGenerator (#12043) (71e3c78)
  • db-sqlite: text field converts to floating point number (#12107) (6572bf4)
  • richtext-lexical: allow to indent children even if their parents are not indentable (#12042) (babf4f9)
  • templates: missing default value in select field (#11715) (5b554e5)
  • translations: add missing Catalan translations (#10682) (85e6edf)
  • ui: stale paths on custom components within rows (#11973) (21599b8)
  • ui: issue with schedule publish disappearing on autosave collections (#12078) (3a7cd71)
  • ui: use route.api from config in OrderableTable (#12081) (3287f70)

⚡ Performance

  • ui: prevent blockType: "$undefined" from being sent through the network (#12131) (4426625)

📚 Documentation

🏡 Chores

  • adjusts ChevronIcon styling to match other icons (#12133) (2362899)
  • assign available port to env variable in dev suite (#12092) (39462bc)
  • separate Lexical tests into dedicated suite (#12047) (a66f90e)

🤝 Contributors

v3.34.0

10 Apr 19:49
272914c
Compare
Choose a tag to compare

v3.34.0 (2025-04-10)

🚀 Features

  • support where querying by join fields (#12075) (466dcd7)
  • add support for time format config on scheduled publish (#12073) (eab9770)

🐛 Bug Fixes

  • cannot define a join field when the target relationship is nested to a second or higher tab (#12041) (7aa3c5e)
  • image previews getting stuck in list view when paginating (#12062) (a0fb335)
  • array minRow validation should not show when non-required with no rows (#12037) (f079ece)
  • querying by polymorphic join field relationTo with overrideAccess: false (#11999) (b9ffbc6)
  • db-postgres: long array field table aliases cause error even when dbName is used (#11995) (09782be)
  • richtext-lexical: diff component css was not included in css bundle (#12028) (f1d9b44)
  • ui: ensure file field is only serialized at top-level for upload-enabled collections (#12074) (112e081)
  • ui: form state race conditions (#12026) (4d7c1d4)
  • ui: adds multi select inputs for text fields in where builder (#12054) (18ff9cb)
  • ui: orderable table rendering (#12066) (9853f27)
  • ui: adds multi select inputs for number fields in where builder (#12053) (09916ad)
  • ui: resets value in where builder when operator changes (#11136) (ec34e64)
  • ui: upload edits handling for bulk uploads (#12001) (c7b14bd)
  • ui: prefer adminThumbnail even if file is non-image (#11948) (7721025)

⚡ Performance

  • richtext-lexical: debounce field onChange handler (#12046) (101f765)

📚 Documentation

🧪 Tests

📝 Templates

⚙️ CI

  • add sort and hooks suites to the e2e tests matrix (#12023) (ae9e5e1)

🏡 Chores

🤝 Contributors