Skip to content

Releases: payloadcms/payload

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

v3.33.0

04 Apr 19:12
36e7c59
Compare
Choose a tag to compare

v3.33.0 (2025-04-04)

🚀 Features

  • drizzle: export buildQuery and parseParams (#11935) (f34eb22)
  • graphql: improve non-nullability in query result types (#11952) (018bdad)
  • next: improved lexical richText diffing in version view (#11760) (d29bdfc)
  • storage-uploadthing: configurable upload router input config (#11954) (f9c73ad)
  • ui: use drag overlay in orderable table (#11959) (816fb28)

🐛 Bug Fixes

  • postgres null value breaks orderable hook (#11997) (9adbbde)
  • allow custom password field when using disableLocalStrategy: true (#11893) (8ad22eb)
  • ValidationError error message when label is a function (#11904) (dc793d1)
  • do not append doc input for scheduled publish job if it's enabled only for globals (#11892) (760cfad)
  • db-mongodb: querying relationships with where clause as an object with several conditions (#11953) (857e984)
  • db-postgres: deleteOne fails when the where query does not resolve to any document (#11632) (4ebd3ce)
  • db-postgres: down migration fails because migrationTableExists doesn't check in the current transaction (#11910) (f310c90)
  • graphql: respect draft: true when querying joins (#11869) (e5690fc)
  • storage-uploadthing: pass clientUploads.routerInputConfig to the handler (#11962) (8e93ad8)
  • ui: optimistic rows disappear while form state requests are pending (#11961) (8880d70)

⚡ Performance

  • ui: significantly optimize form state component rendering, up to 96% smaller and 75% faster (#11946) (e87521a)

📚 Documentation

📝 Templates

  • set packageManager pnpm version for vercel templates (#11992) (b76844d)

🏡 Chores

🤝 Contributors

v3.32.0

01 Apr 18:34
4ac6d21
Compare
Choose a tag to compare

v3.32.0 (2025-04-01)

🚀 Features

  • orderable collections (#11452) (d963e6a)
  • configurable job queue processing order (LIFO/FIFO), allow sequential execution of jobs (#11897) (c844b4c)
  • change version view modifiedOnly default to true (#11794) (21f7ba7)
  • db-*: return database name to unsanitized config (#11913) (a083d47)
  • db-*: export types from main export (#11914) (a6f7ef8)

🐛 Bug Fixes

  • typescriptSchema override required to false (#11941) (968a066)
  • support parallel job queue tasks (#11917) (9a1c3cf)
  • next: block encoded and escaped open redirects in getSafeRedirect (#11907) (96289bf)
  • plugin-cloud-storage: ensure client handlers are added to import map regardless of enabled state (#11880) (98e4db0)
  • richtext-lexical: incorrectly hidden fields in drawers due to incorrect permissions handling (#11883) (f34cc63)
  • translations: improve Swedish translations for query presets (#11937) (5b0e0ab)
  • ui: nested fields disappear when manipulating rows in form state (#11906) (373f6d1)
  • ui: switching languages does not update cached client config (#11725) (4a0bc86)
  • ui: query presets are available for unrelated collections (#11872) (4fc2eec)
  • ui: nested custom components sometimes disappear when queued in form state (#11867) (10ac989)

⚡ Performance

  • prefer async fs calls (#11918) (d1c0989)
  • ui: download only images and optimize image selection for document edit view, prioritize best-fit size (#11844) (5ae5255)

🛠 Refactors

  • drizzle: replace query chaining with dynamic query building (#11923) (9c88af4)
  • ui: replace autosave queue pattern with useQueues hook (#11884) (62c4e81)

📚 Documentation

🧪 Tests

📝 Templates

  • pin all payload packages, improve gen-templates script (#11841) (59c9fee)

🏡 Chores

🤝 Contributors