Releases: payloadcms/payload
Releases · payloadcms/payload
v3.49.1
v3.49.1 (2025-07-29)
🐛 Bug Fixes
- support next.js 15.4.4 (#13280) (5c94d2d)
- keep apiKey encrypted in refresh operation (#13063) (#13177) (b1fa76e)
- filters cookies with the
payload-
prefix in getExternalFile by default (#13215) (0894249) - use atomic operation for incrementing login attempts (#13204) (4fde0f2)
- refactors toast error rendering (#13252) (d093bb1)
- serve svg+xml as svg (#13277) (bc80284)
- svg+xml file detection (#13276) (e8f6cb5)
- drizzle: respect join.type config (#13258) (8518141)
- next: group by null relationship crashes list view (#13315) (e502203)
- next: catch list filter errors, prevent list view crash (#13297) (8d84352)
- next: pass req through document tab conditions and custom server components (#13302) (c5c8c13)
- next: unable to view trashed documents when group-by is enabled (#13300) (aff2ce1)
- plugin-multi-tenant: prefer assigned tenants for selector population (#13213) (e29d1d9)
- richtext-lexical: unify indent between different converters and make paragraphs and lists match without CSS (#13274) (7cd4a8a)
- translations: improve swedish translations (#13272) (da8bf69)
- translations: missing closing brace in rs latin translation for lastSavedAgo (#13172) (26d9dae)
- ui: autosave-enabled document drawers close unexpectedly within the join field (#13298) (61ee8fa)
⚡ Performance
📚 Documentation
- remove asterisk from optional url property in live preview docs (#13108) (fc59448)
- typo in vercel-content-link.mdx (#13170) (9e04dbb)
- fixes typo in ternary operator for live preview docs (#13163) (72954ce)
- remove obsolete scheduler property (#13278) (2e9ba10)
🧪 Tests
📝 Templates
⚙️ CI
🏡 Chores
- next: cleanup unused code (#13292) (b1aac19)
- ui: var name typo in relationship field (#13295) (a888d5c)
🤝 Contributors
- contip (@contip)
- German Jablonski (@GermanJablo)
- Adebayo Ajayi (@Braggedtooth)
- brutumfulmen97 (@brutumfulmen97)
- Alejandro Martinez (@ja-martinez)
- Aayush Rajagopalan (@aayushxr)
- Sean Zubrickas (@zubricks)
- Jacob Fletcher (@jacobsfletch)
- Jarrod Flesch (@JarrodMFlesch)
- Elliot DeNolf (@denolfe)
- Alessio Gravili (@AlessioGr)
- Patrik (@PatrikKozak)
v3.49.0
v3.49.0 (2025-07-25)
🚀 Features
- adds trash support (soft deletes) (#12656) (f63dc2a)
- group by (#13138) (bccf6ab)
- scheduling jobs (#12863) (c08b2ae)
- ui: expose refresh method to list drawer context (#13173) (e48427e)
🐛 Bug Fixes
- filtering by polymorphic relationships inside other fields (#13265) (75385de)
- text field validation for minLength: 1, required: false (#13124) (af2ddff)
- empty folderType arrays break relational dbs (#13219) (7f9de6d)
- handle undefined values in afterChange hooks when read:false and create:true on the field level access for parents and siblings (#12664) (46d8a26)
- exit payload jobs:run process after completion (#13211) (4ae503d)
- db-mongodb: handle duplicate unique index error for DocumentDB (#13239) (c1cfceb)
- db-postgres: search is broken when
useAsTitle
is not specified (#13232) (a83ed5e) - next: prevent base list filters from being injected into the url (#13253) (0eac58e)
- plugin-import-export: json preview and downloads preserve nesting and exclude disabled fields (#13210) (8f85da8)
- ui: preserve localized blocks and arrays when using CopyToLocale (#13216) (4a712b3)
- ui: incorrect blocks label sizing (#13264) (fa7d209)
- ui: ensure document unlocks when logging out from edit view of a locked document (#13142) (7e81d30)
- ui: monomorphic relationship fields should not show relationTo option labels (#13245) (29fb9ee)
- ui: select all should reset when params change, page, filter, etc (#12612) (412bf4f)
- ui: ensure publishSpecificLocale works during create operation (#13129) (dce898d)
- ui: properly sync search params to user preferences (#13200) (d7a3faa)
⚡ Performance
- db-postgres: avoid including
prettier
to the bundle (#13251) (380ce04) - drizzle: single-roundtrip db updates for simple collections (#13186) (94f5e79)
🛠 Refactors
📚 Documentation
- add
status
to forbidden field names when using Postgres and drafts are enabled (#13233) (7ae4f8c) - remove payload cloud (#13240) (77f279e)
- fix typo, example was not valid JSON (#13224) (0eb8f75)
- shorten line length in code snippet comments to avoid horizontal scrolling (#13217) (d6e21ad)
- plugin-import-export: document plugin-import-export (#13243) (14322a7)
🔨 Build
⚙️ CI
🏡 Chores
- add new int test verifying that select improves performance of new optimization (#13254) (aeee070)
- plugin-import-export: use debug-level logging for createExport process (#13242) (246a42b)
🤝 Contributors
- Sasha (@r1tsuu)
- Patrik (@PatrikKozak)
- German Jablonski (@GermanJablo)
- Jarrod Flesch (@JarrodMFlesch)
- Jacob Fletcher (@jacobsfletch)
- Dan Ribbens (@DanRibbens)
- Alessio Gravili (@AlessioGr)
- Elliot DeNolf (@denolfe)
- fgrsource (@fgrsource)
- Chandler Gonzales (@jcgsville)
- Jessica Rynkar (@jessrynkar)
- iamacup (@iamacup)
- Jake Fell (@jakefell)
v3.48.0
v3.48.0 (2025-07-17)
🚀 Features
- add
findDistinct
operation (#13102) (a20b436) - atomic number field updates (#13118) (841bf89)
- plugin-import-export: adds support for disabling fields (#13166) (5839cb6)
- plugin-import-export: adds support for forcing export format via plugin config (#13160) (7294cf5)
- plugin-import-export: adds pluginConfig options to disable Save and Download buttons in export UI (#13158) (de53f68)
- richtext-lexical: export $createLinkNode and $isLinkNode for server use (#13205) (6ae730b)
- ui: supports collection scoped folders (#12797) (12539c6)
🐛 Bug Fixes
- Enhances field-level access controls on Users collection to address s… (#13197) (cab7ba4)
- cron jobs running when calling bin scripts, leading to db errors (#13135) (64d76a3)
- types for RenderField fields prop (#13162) (5f01953)
- db-mongodb: improve compatibility with Firestore database (#12763) (41cff6d)
- plugin-import-export: disabled flag to cascade to nested fields from parent containers (#13199) (95e373e)
- plugin-import-export: export field dropdown to properly label and path fields in named/unnamed tabs (#13180) (2a59c5b)
- plugin-multi-tenant: selector could become hidden (#13134) (e575511)
- plugin-seo: add localized property to MetaTitleComponent (#12751) (d213c91)
⚡ Performance
📚 Documentation
- fix minor typo (#13185) (be8e8d9)
- performance (#13068) (277448d)
- fix invalid syntax failing the docs import (#13165) (4831bae)
- add section on browser environment variables when using experimental-build-mode (#13164) (4c69f8e)
🧪 Tests
📝 Templates
⚙️ CI
- disable bundle analysis for forks (#13198) (e6da384)
- fix post-release-templates workflow (#13159) (edd1f02)
🤝 Contributors
- Patrik (@PatrikKozak)
- Jarrod Flesch (@JarrodMFlesch)
- Alessio Gravili (@AlessioGr)
- Sasha (@r1tsuu)
- Sean Zubrickas (@zubricks)
- Elliott W (@elliott-w)
- Elliot DeNolf (@denolfe)
- jangir-ritik (@jangir-ritik)
- Jacob Fletcher (@jacobsfletch)
- Patrick Roelofs (@Patrickroelofs)
v3.47.0
v3.47.0 (2025-07-11)
🚀 Features
- allow joins, select, populate, depth and draft to /me REST API operation (#13116) (2d91cb6)
- exports new sanitizeUserDataForEmail function (#13029) (9f1bff5)
- next: redirect non-existent documents to list view with banner (#13062) (5e82f9f)
- next: add redirect from
${adminRoute}/collections
to${adminRoute}
(#13061) (a7a0501) - plugin-import-export: show delayed toast when export download takes time (#13126) (b3a994e)
- storage-*: include modified headers into the response headers of files when using adapters (#12096) (cb6a73e)
- ui: add API key visibility toggle (#13110) (8a3b97c)
- ui: adds support for copy pasting complex fields (#11513) (1d6ffcb)
🐛 Bug Fixes
- execute mimetype validation on the file buffer data (#13117) (5695d22)
- login operation not returning collection and _strategy (#13119) (0c2b105)
- ensure we perform ssrf check within dispatcher (#13078) (e99c67f)
- ensure default values are not shown when value is hidden (#13074) (855a320)
- correctly reset login attempts (#13075) (aa97f3c)
- payload auth api-key algorithm compatibility (#13076) (9c45321)
- next: prevent live preview url functions from firing unnecessarily (#13088) (0b88466)
- plugin-import-export: sync export field selection with list view columns from query columns (#13131) (c1bad01)
- plugin-import-export: flattening logic for polymorphic relationships in CSV exports (#13094) (c6105f1)
- plugin-import-export: selectionToUse field to dynamically show valid export options (#13092) (0806ee1)
- plugin-import-export: sync field select dropdown with form value (#13103) (1c6a79b)
- ui: disabled and styles add row button correctly (#13140) (2cafe49)
- ui: ensure buildFormStateHandler throws error instead of returning null for unauthorized requests (#13123) (06ef798)
- ui: monomorphic joins tables not fetching draft documents (#13139) (19a3367)
- ui: ensure that schedule publishing time picker can only be in the future (#13128) (f63dfad)
- ui: hidden input should wait for form initialization (#13114) (c77b39c)
- ui: improve alignment of clear and dropdown indicator buttons in select based fields (#12995) (4c25357)
- ui: prevent error crashing UI when relationship assigned as useAsTitle (#12981) (8a5cb27)
⚡ Performance
- db-postgres: simplify
db.updateOne
to a single DB call with if the passed data doesn't include nested fields (#13060) (055cc4e)
📚 Documentation
- richtext-lexical: add documentation page about official features (#13132) (576644d)
- templates: fix grammar in README (#13027) (96c24a2)
⚙️ CI
- use .tool-versions file in setup (#13093) (dde9681)
- audit-dependencies workflow (#13090) (c876ddf)
- blank audit-dependencies workflow [skip ci] (fee33b5)
🏡 Chores
🤝 Contributors
- Jarrod Flesch (@JarrodMFlesch)
- German Jablonski (@GermanJablo)
- Aaron Claes (@AaronClaes)
- Patrik (@PatrikKozak)
- Jessica Rynkar (@jessrynkar)
- Paul (@paulpopus)
- Sasha (@r1tsuu)
- Alessio Gravili (@AlessioGr)
- Said Akhrarov (@akhrarovsaid)
- Elliot DeNolf (@denolfe)
- Jacob Fletcher (@jacobsfletch)
- Dani Calero (@danicaleroo)
- Dan Ribbens (@DanRibbens)
- Adam Klingbaum (@adamklingbaum)
v3.46.0
v3.46.0 (2025-07-07)
🚀 Features
🐛 Bug Fixes
- deduplicate custom array id fields (#13064) (e6f8ca6)
- check hostname of upload url (#13018) (30fc7e3)
- db-mongodb: updateOne mutates the data object and does not transform it for read (#13065) (6d5cc84)
- next: adds token to reset password initialState (#13067) (f4f13a2)
- next: respect collection-level live preview config (#13036) (f49eeb1)
- plugin-redirects: make 'from' field unique to prevent errors in redirect logic (#12964) (50c2f8b)
- ui: increase timeout for opening list drawer in RelationshipInput (#13031) (2650eb7)
- ui: change password button is hidden when user has full field access (#12988) (1d9ad6f)
🧪 Tests
⚙️ CI
🤝 Contributors
- Patrik (@PatrikKozak)
- Kendell (@kendelljoseph)
- Alessio Gravili (@AlessioGr)
- Jessica Rynkar (@jessrynkar)
- Jarrod Flesch (@JarrodMFlesch)
- Germán Jabloñski (@GermanJablo)
- Jacob Fletcher (@jacobsfletch)
v3.45.0
v3.45.0 (2025-07-03)
🚀 Features
- mount live preview to document root (#12860) (f2213e5)
- drizzle: support half-precision, binary, and sparse vectors column types (#12491) (583a733)
🐛 Bug Fixes
- disable graphql introspection queries when disableIntrospectionInProduction is true (#12982) (a9580e0)
- strict custom view paths (#12968) (cfc7adc)
- appropriately throw unverified email error (#12933) (9f60306)
- db-mongodb: nested sorting by ID (#13016) (81532cb)
- db-mongodb: add ability to disable fallback sort and no longer adds a fallback for unique fields (#12961) (c902f14)
- db-postgres: joins with
hasMany: true
relationships nested to an array (#12980) (0e8ac0b) - drizzle: ensure updateOne does not create new document if
where
query has no results (#12991) (fafaa04) - examples: only allow super admins to create users with super admin role (#13015) (6e5ddc8)
- examples: checks requested tenant matches user tenant permissions (#13012) (5002953)
- plugin-import-export: pre-scan columns before streaming CSV export (#13009) (34c3a51)
- plugin-import-export: preview table to include all selected columns regardless of populated data (#12985) (335af1b)
- plugin-multi-tenant: unnecessary modal appearing (#12854) (16f5538)
- templates: wrong link in demo content (custom components) (#13024) (f70c6fe)
- ui: save nested richtext inside inlineBlock (#12773) (babcd59)
- ui: autosave infinite loop within document drawer (#13007) (b40c581)
- ui: field bulk upload showing stale data (#13006) (9ba740e)
- ui: prevent document drawer from remounting on save (#13005) (c80b6e9)
- ui: bulk upload redirecting to relationship documents when added (#13001) (a9ad7c7)
- ui: skip disabled fields when adding OR filter conditions in list view (#13004) (7a40a9f)
- ui: render preview sizes button when adjustments are disabled but image sizes are defined (#12999) (b1ae749)
- ui: block rows unexpectedly collapse and array rows not collapsed on init (#12987) (3f30a2e)
- ui: prevent error if rows is undefined in mergeServerFormState (#12962) (6f6d305)
🎨 Styles
🧪 Tests
📝 Templates
⚙️ CI
- template errors not being caught due. fix: error due to updated generated-types User type (#12973) (4458f74)
🏡 Chores
🤝 Contributors
- Patrik (@PatrikKozak)
- Sasha (@r1tsuu)
- Sebastian Blank (@blankse)
- Alessio Gravili (@AlessioGr)
- Germán Jabloñski (@GermanJablo)
- Jessica Rynkar (@jessrynkar)
- Jacob Fletcher (@jacobsfletch)
- Jarrod Flesch (@JarrodMFlesch)
- Said Akhrarov (@akhrarovsaid)
- Paul (@paulpopus)
v3.44.0
v3.44.0 (2025-06-27)
🚨 Notice 🚨
If your project uses the local auth strategy with db-postgres
or db-sqlite
, a migration is required. This is due to a new security feature (enabled by default) that stores a unique auth session identifier in the database.
To opt out and continue using the previous behavior, you can disable the feature by setting auth.useSessions: false
in your users collection config.
For example:
// payload.config.ts
collections: [
{
slug: 'users',
auth: {
useSessions: false,
},
fields: [],
},
],
🚀 Features
- auth sessions (#12483) (26d709d)
- collection-level preferences (#12909) (c8b7214)
- collection-level
disableBulkEdit
(#12850) (a5ec55c) - plugin-import-export: preview displays CSV and JSON data accurately (#12948) (3830d71)
- templates: added int and e2e tests to blank and website templates (#12866) (87c7952)
🐛 Bug Fixes
- richTextField supports beforeInput/afterInput, but these were missing from types.ts (#12889) (e769550)
- validate "null" value for point field as true when its not required (#12908) (2da6d92)
- get external resource blocked (#12927) (a7ad573)
- restore missing properties to live preview client config (#12904) (bcb10b5)
- uses valid fractional index for test (#12942) (8900a38)
- querying virtual fields deeply with
draft: true
(#12868) (bc9b501) - use small pill size when viewing version information (#12844) (6c4dfe4)
- db-mongodb: strip deleted from the config blocks from the result (#12869) (54afaf9)
- db-postgres: joins with custom schema (#12937) (c1f6297)
- db-postgres: querying on
hasMany: true
select field in a relationship (#12916) (b74969d) - drizzle: skip column if undefined in findMany (#12902) (605c993)
- live-preview: client-side live preview cannot populate more than 10 relationships at once (#12929) (7472798)
- live-preview: foreign postMessage events reset client-side state (#12925) (67fa5a0)
- next: live preview popup triggers leave without saving modal (#12947) (141133a)
- next: prevent errors in globals version view (#12920) (39e9519)
- next: remove error handling from next auth functions (#12897) (1b5e3fe)
- next: remove console.error from next auth functions (#12881) (fe58f03)
- plugin-import-export: duplicated rows and headers in CSV export when streaming paginated results (#12941) (5cf9287)
- plugin-import-export: csv export for polymorphic relationship fields (#12926) (6d76874)
- plugin-import-export: omit CSV columns when toCSV returns undefined (#12923) (751691a)
- plugin-multi-tenant: updates tenant selector upon tenant creation (#12936) (c76d839)
- richtext-lexical: consistent html converter inline padding (#12848) (11ac230)
- ui: usePreventLeave should not show alert for exceptions (#12722) (c3c1614)
- ui: vertically align table headers to the middle (#12699) (0e9865c)
- ui: properly render create new button in polymorphic joins (#12930) (a1822d2)
- ui: render DateTime label as instead of (#12949) (4b9566f)
- ui: bulk upload losing state when adding additional files (#12946) (d62d9b4)
- ui: unreachable custom views when admin route set to '/' (#12812) (379fc12)
- ui: toggle list selections off on successful bulk action (#12861) (9f17db8)
- ui: align caret on error tooltip for checkbox field (#12917) (c094b0e)
- ui: updates auth fields UI to reflect access control (#12745) (1845669)
- ui: folder server function must reference exports dir (#12898) (0d50799)
- ui: custom row labels on arrays should not be removed on field duplication (#12895) (37c945b)
- ui: date format of useAsTitle lost after changing value (#12928) (20bbbcf)
- ui: properly differentiate between DOM events and raw values in setValue (#12892) (c03e9c1)
- ui: should select document after creation from relationship field (#12842) (25e3902)
- ui: support react node content in ConfirmationModal heading and body (#12841) (dffdee8)
🛠 Refactors
- changed default exports to named exports in payload package (#12871) (053192c)
- remove unused assets, move remaining assets out of payload packages (#12874) (bb17cc3)
- simplify job queue error handling (#12845) (59f536c)
- simplify job type (#12816) (84cb2b5)
📚 Documentation
v3.43.0
v3.43.0 (2025-06-16)
🚀 Features
- admin upload controls (#11615) (f2e0422)
- expose
data
argument inafterChange
hook for collections and globals (#12756) (458a04b) - db-postgres: allow to store blocks in a JSON column (#12750) (215f49e)
- db-postgres: support read replicas (#12728) (0a35737)
- version diff view overhaul (#12027) (4e2e4d2)
- next: reorder document view tabs (#12288) (65309b1)
- storage-s3: dynamic presigned URL downloads (#12706) (865a9cd)
- ui: adds constructorOptions to upload config (#12766) (b372a34)
- ui: moves folder rendering from the client to the server (#12710) (a43d1a6)
🐛 Bug Fixes
- ensure job autoruns are not triggered if jobs collection not enabled (#12808) (769ca03)
- filtering joins in
where
by ID (#12804) (9943b35) - change payload.jobs.run and bin script to only run jobs from
default
queue by default, adds support for allQueues argument (#12799) (06ad171) - remove unsupported path property from default document view configs (#12774) (f64a0ae)
- field inside an unnamed group field erroring when used as a title (#12771) (143aff5)
- error when saving global with versioning enabled (#12778) (cf43c5c)
- reduce global DOM/Node type conflicts in server-only packages (#12737) (67fb29b)
- orderable has incorrect sort results depending on capitalization (#12758) (37afbe6)
- ensure redirect route is correctly formatted for "Copy to locale" (#12560) (9d2817e)
- db-mongodb: 4x and more level deep relationships querying (#12800) (245a2de)
- db-mongodb: bump
mongoose
to8.15.1
(#12755) (860e0b4) - db-postgres: reordering of enum values, bump
[email protected]
and[email protected]
(#12256) (7045182) - db-postgres: x3 and more nested blocks regression (#12770) (df8be92)
- db-sqlite: sqlite unique validation messages (#12740) (254ffec)
- plugin-import-export: download button in collection edit view (#12805) (8235fe1)
- plugin-import-export: incorrect custom type on toCSVFunction changed to toCSV (#12796) (3edcc40)
- plugin-import-export: export all available fields by default (#12731) (c4e5831)
- plugin-nested-docs: check error name that is changed at compile time (#12798) (729b676)
- plugin-redirects: add missing optional chaining (#12753) (d0e647a)
- storage-azure: return error status 404 when file is not found instead of 500 (#11734) (018317d)
- storage-gcs: return 404 on file not found instead of 500 (#11746) (d8626ad)
- storage-s3: return error status 404 when file is not found instead of 500 (#11733) (a19921d)
- translations: reformats
bnBD
andbnIN
translation imports to camelCase (#12736) (08fbcb5) - ui: reordering with a join field inside a group (#12803) (e60db07)
- ui: adjust alignment of list header actions (#12793) (77f3805)
- ui: not showing hyphenated field values in table (#12791) (e7b5884)
- ui: inconsistent pill sizes across admin panel (#12788) (9364d51)
⚡ Performance
🛠 Refactors
- next: simplify document tab rendering logic (#12795) (53835f2)
- next: simplify document view routing (#12777) (b556fe3)
📚 Documentation
- fix header custom component example (#12801) (7fef589)
- remove outdated
buildPath
property (#12741) (38652d7) - add info about localized/built-in validation error messages (#12718) (96f417b)
- fix invalid code block language (#12734) (ebe7fde)
🏡 Chores
- adds filters (#12622) (c04c257)
- remove invalid colon from workspaces key in package.json (#12757) (08d5b2b)
- migrate to TypeScript strict in Payload package - #4/4 (#12733) (53f8838)
- scripts: fix tsconfig.base.json reset (3313ab7)
🤝 Contributors
- Sasha (@r1tsuu)
- Jessica Rynkar (@jessrynkar)
- Alessio Gravili (@AlessioGr)
- Dan Ribbens (@DanRibbens)
- Kendell Joseph (@kendelljoseph)
- Paul (@paulpopus)
- Jacob Fletcher (@jacobsfletch)
- Jayce Pulsipher (@jaycetde)
- Patrik (@PatrikKozak)
- Jarrod Flesch (@JarrodMFlesch)
- Patrick Roelofs (@Patrickroelofs)
- Anders Semb Hermansen (@andershermansen)
- Said Akhrarov (@akhrarovsaid)
- Elliot DeNolf (@denolfe)
- Anyu Jiang (@anyuj)
- Germán Jabloñski (@GermanJablo)
- codeflorist (@codeflorist)
v3.42.0
v3.42.0 (2025-06-09)
🚀 Features
- create the importmap file if missing and the location can be found (#12727) (c6659db)
- plugin-import-export: add custom toCSV function on fields (#12533) (8f4c442)
- plugin-import-export: add debug logging option (#12705) (678bfc7)
- translations: add Bangla translations (#12696) (3f670ca)
🐛 Bug Fixes
- proper globals max versions clean up (#12611) (9fbc3f6)
- adds routeParams to the req on views (#12711) (773e4ad)
- plugin-form-builder: export DateField type (#12695) (8d7dbe6)
- plugin-import-export: incorrect config extension of jobs (#12730) (ff615d3)
- plugin-import-export: revise zhTw translations (#12685) (afbdf3d)
- richtext-lexical: text state css not applied if 2+ text state groups present (#12726) (3d177fd)
- richtext-lexical: prevent runtime error if using TextStateFeature without props (#12668) (6f82154)
- richtext-slate: add 'li' string literal to RichTextElement type (#12693) (e10e445)
- translations: correct i18n dynamic variable name for 'movingFromFolder' (#12642) (6f76d72)
⚡ Performance
📚 Documentation
- document how to expose the jobs collection in Admin UI (#12707) (34fe36b)
- fix formatting in custom components > edit view paragraph (#12697) (6466684)
- improve jobs autorun docs, adds e2e test (#12196) (7c05c77)
- enhance drafts documentation with examples for REST, Local, and GraphQL APIs (#12575) (629e74d)
- removes duplicate headline in building without a db connection (#12694) (4ee4aa7)
- plugin-form-builder: add warning about GraphQL type name collis… (#12720) (7b21270)
🏡 Chores
🤝 Contributors
- Dan Ribbens (@DanRibbens)
- Sasha (@r1tsuu)
- sonny.you (@SonnyYou)
- Jarrod Flesch (@JarrodMFlesch)
- Alessio Gravili (@AlessioGr)
- Germán Jabloñski (@GermanJablo)
- Gordon Westerman (@gwesterman)
- Willian de Souza (@WillFelisberto)
- Anyu Jiang (@anyuj)
- SHOMRIDDHO'S WORLD (@shomriddho)
- Jessica Rynkar (@jessrynkar)
- Paul (@paulpopus)
- Sean Zubrickas (@zubricks)
v3.41.0
v3.41.0 (2025-06-05)
🚀 Features
- optionally exclude collection documents from appearing in browse-by-folder (#12654) (337f618)
- improve turbopack compatibility (#11376) (319d335)
- polymorphic join querying by fields that don't exist in every collection (#12648) (2b40e0f)
- ui: use document drawers for folder edit/create (#12676) (9581092)
- ui: adds new editMenuItems custom component (#12649) (625d8d9)
🐛 Bug Fixes
- correctly detect glb & gltf mimetypes during upload (#12623) (05eeddb)
- allow unnamed group fields to not set a label at all (#12580) (d561195)
- cpa: generate .env when using the --example flag (#12572) (836fd86)
- db-postgres: ensure deletion of numbers and texts in upsertRow (#11787) (bd512f1)
- db-postgres:
in
query withnull
(#12661) (c08cdff) - live-preview: correct type inference (#12619) (c83e791)
- next: cannot override tab of default views (#11789) (c639c5f)
- plugin-seo: thread allowCreate to meta image component (#12624) (ede5c67)
- richtext-lexical: export defaultColors for use in client components (#12627) (8199a7d)
- richtext-lexical: enable select inputs with ctrl+a or cmd+a (#12453) (89ced5e)
- translations: add missing import for lv locale from date-fns (#12577) (cbc37d8)
- ui: adjusts margin spacing on upload actions (#12692) (1dd4a12)
- ui: safely extract text from React nodes (#12419) (48e5ee6)
- ui: formatDate and formatTimeToNow utility type error on i18n arg to support I18nClient too (#12576) (76bf459)
- ui: correctly thread through the autoComplete attribute from admin config to the text input (#12473) (08ec837)
- ui: clear miliseconds in date fields unless theyre explicitly provided in the display format (#12650) (a9ff375)
- ui: reset columns state throwing errors (#11903) (08a6f88)
- ui: upload action button styles (#12592) (6119d89)
⚡ Performance
🛠 Refactors
- translations: correct i18n translation for Mandarin (#12561) (6f8cff7)
- ui: improve relationship field option loading reliability using queues (#12653) (30dd9a2)
📚 Documentation
- add Content-Type header for JWT authentication (#12513) (3f7debd)
- fix import statements for
plugin-nested-docs
(#12494) (5635ec5) - improve rich-text documentation with hasText usage tip (#12645) (53de775)
- fix beforeHook documentation to reflect actual behaviour (#12651) (fd5cd1a)
- improve module augmentation docs for request context (#12681) (0c3ff88)
- update seo plugin tabbedUI docs to mention potential pitfalls with the config option (#12549) (505eaa2)
- missing dash (#12644) (684c436)
- building without a db connection (#12607) (7c094dc)
📝 Templates
⚙️ CI
🏡 Chores
- fix various e2e test setup issues (#12670) (545d870)
- fix lint warnings for default exports, unused imports, unused err in catch (#12666) (48218bc)
- migrate to TypeScript strict in Payload package (enable strictNullChecks) - #3 (#12586) (6ec21a5)
- update CONTRIBUTING.md (#12511) (5e3a94b)
🤝 Contributors
- Patrik (@PatrikKozak)
- Kamil Troczewski (@kamiloox)
- codeflorist (@codeflorist)
- Rot4tion (@Rot4tion)
- iamacup (@iamacup)
- Jacob Fletcher (@jacobsfletch)
- Alessio Gravili (@AlessioGr)
- Jarrod Flesch (@JarrodMFlesch)
- Elliot DeNolf (@denolfe)
- Said Akhrarov (@akhrarovsaid)
- Sasha (@r1tsuu)
- Paul (@paulpopus)
- Germán Jabloñski (@GermanJablo)
- Jessica Rynkar (@jessrynkar)
- Jacob (@chmielulu)
- Tobias Odendahl (@tak-amboss)
- Anyu Jiang (@anyuj)