Files
payloadcms/CHANGELOG.md
Dan Ribbens b9dec2f714 Chore/next poc merge main (#5204)
* wip moves payload, user and data into partial req

* chore: adjust req type

* chore(next): installs sass and resolves type errors

* feat: working login route/view

* fix: me route

* chore(next): scaffolds access routes (#4562)

* chore(next): scaffolds admin layout and dashboard view (#4566)

* chore(next): builds initPage utility (#4589)

* feat(3.0): next route handlers (#4590)

* chore: removes old files

* chore(next): ssr list view (#4594)

* chore: removes old files

* chore: adjusts graphql file imports to align with new operation exports

* chore: allows for custom endpoints

* chore: cleanup

* chore(next): ssr edit view (#4614)

* chore(ui): ssr main nav (#4619)

* chore(next): ssr account view (#4620)

* chore(next): ssr auth views and document create (#4631)

* chore(next): ssr globals view (#4640)

* chore(next): scaffolds document layout (#4644)

* chore(next): ssr versions view (#4645)

* chore(next): ssr field conditions (#4675)

* chore(next): ssr field validations (#4700)

* chore(next): moves dashboard view into next dir

* chore(next): moves account view into next dir

* chore(next): moves global edit view into next dir

* chore(next): returns isolated configs and locale from initPage

* chore(next): ssr api view (#4721)

* feat: adds i18n functionality within Rest API, Local and Client contexts (#4749)

* chore: separate client translation groups with empty line

* chore: add missing translation used in db adapters

* chore: simplify next/routes export and import paths

* chore: renames PayloadT to Payload

* chore(next): custom views (#4748)

* chore: fix translation tsconfig

* chore: adjust other package ts-configs that rely on translations

* chore(next): installs @payloadcms/ui as direct dependency

* chore(next): progress to build

* chore(next): migrates types (#4792)

* fixes acccept-language detection

* chore(next): moves remaining components out from payload core (#4794)

* chore(deps): removes all unused dependencies from payload core (#4797)

* chore(next): achieves buildable state (#4803)

* adds Translation component and removes more react-i18next

* fixes up remaining translation strings

* fixes a few i18n TODO's

* chore: remaining translation strings without colons

* chore: adds missing ja translations

* chore(next): ssr group field (#4830)

* chore: removes placeholder t function

* chore: removes old file

* chore(bundler-webpack): removes webpack bundler

* chore(bundler-vite): removes vite bundler

* chore(next): ssr tabs field (#4863)

* chore(next): ssr row field

* chore(next): ssr textarea field

* chore(next): wires server action into document edit view (#4873)

* chore(next): conditional logic (#4880)

* chore(next): ssr radio, point, code, json, ui, and hidden fields (#4891)

* chore(next): ssr collapsible field (#4894)

* chore: remove findByID from req

* chore: adjusts file property on request type

* comment clarification

* chore: wires up busboy with Requst readstream

* chore: ports over express-fileupload into a NextJS compatible format

* chore: adjust upload file structure

* chore: adds try/catch around routes, corrects a few route responses

* chore: renames file/function

* chore: improve req type safety in local operations, misc req.files replacements

* chore: misc type and fn export changes

* chore: ensures root routes take pass unmodified request to root routes

* chore: improve types

* chore: consolidates locale api req initialization (#4922)

* chore(next): overhauls field rendering strategy (#4924)

* chore(next): ssr array field (#4937)

* chore(next): ssr blocks field (#4942)

* chore(next): ssr upload field and document drawer (#4957)

* chore(next): wires form submissions (#4982)

* chore: api handler adjustments

* feat: adds graphql playground handler

* adds credentials include setting to playground

* remove old playground init, stub graphql handler location

* fix: allow for null fallbackLocale

* fix: correctly prioritize locales passed as null

* chore: move all graphql code into next package

* graphql changes

* chore: semi working version of graphql http layer

* gql fix attempts

* rm console log

* chore: partial gql changes

* chore: adds gql and gql-http back into payload

* chore: removes collection from req

* chore: separates graphql package out for schema generation

* chore: dep cleanup

* chore: move graphql handlers

* chore: removes unused deps

* chore(next): ssr list view (#5032)

* chore: refactor response handler order for custom endpoints

* chore: add back in condition for collection GET path with 2 slugs

* chore: rm optional chain

* chore: import sort route file

* chore: allows custom endpoints to attempt before erroring

* feat: adds memoization to translation functions (#5036)

* chore: fix APIError import

* chore: return attemptCustomEndpointBeforeError responses

* chore(next): properly instantiates table columns

* fix(next): attaches params to req and properly assigns prefs key (#5042)

* chore: reorganize next route order

* chore(next): adds RouteError handler to next routes

* chore: builds payload successfully

* chore: misc file omissions

* fix(ui): maintains proper column order

* fix(ui): ensures first cell is a link

* fix(next): properly copies url object in createPayloadRequest (#5064)

* fix(ui): bumps react-toastify to v10.0.4 to fix hydration warnings

* feat: add route for static file GET requests (#5065)

* chore(next): allows resolved config promise to be thread through initPage (#5071)

* chore(ui): conditionally renders field label from props

* feat(next): next install script

* chore: pass config to route handlers

* feat: initial test suite framework (#4929)

* chore(next): renderable account, api, and create first user views (#5084)

* fix(next): properly parses search params in find, update, and delete handlers (#5088)

* chore(next): ssr versions view (#5085)

* chore: adds homepage for scss testing

* chore: moves dev folder to top, establishes new test pattern

* chore: working turbopack

* chore: sets up working dynamic payload-config imports

* remove unused code

* chore: rm console log

* misc

* feat: correctly subs out ability to boot REST API within same process

* chore: WIP dev suites

* chore: removes need for REST_API folder in test dir

* removes duplicate bootAdminPanel fn

* misc

* specify default export

* chore: sets up jest to work with next/jest

* chore: progress to mongodb and sharp builds

* chore: passing community tests

* chore: sorta workin

* chore: adjust payload-config import

* chore: adds rest client for Next handlers

* chore: removes test garb

* chore: restores payload-config tsconfig path temporarily

* chore: establishes pattern for memory db during tests

* chore: bumps mongoose to 7

* chore(next): 404s on nested create urls

* chore: functional _community e2e

* chore: increases e2e expect timeout

* fix(next): sanitizes locale toString from client config

* chore: type fixes

* chore: pulls mongodb from main

* chore: uses graphql to log user in

* feat: passing auth test suite

* chore(ui): threads params through context and conditionally renders document tabs (#5094)

* feat(ui): adds params context (#5095)

* chore: removes unecessary memory allocation for urlPropertiesObject object

* chore: passing graphql test suite

* chore: removes references to bson

* chore: re-enables mongodb memory server for auth test suite

* chore: replace bson with bson-objectid

* feat: passing collections-rest int suite

* chore: fixes bad imports

* chore: more passing int suites

* feat: passing globals int tests

* feat: passing hooks int test suite

* chore: remove last express file

* chore: start live-preview int test migration

* chore: passing localization int tests

* passing relationships int tests

* chore: partial passing upload int tests

* chore: fixes scss imports

* chore(ui): renders document info provider at root (#5106)

* chore: adds schema path to useFieldPath provider, more passing tests

* chore: begins work to optimize translation imports

* chore: add translations to ui ts-config references

* chore: add exports folder to package json exports

* chore: adds readme how-to-use instructions

* chore: attempts refactor of translation imports

* chore: adds authentication:account translation key to server keys

* chore: finishes translation optimization

* chore: ignores warnings from mongodb

* chore(ui): renders live document title (#5115)

* chore(ui): ssr document tabs (#5116)

* chore: handles redirecting from login

* chore: handle redirect with no searchParams

* chore: handle missing segments

* chore(next): migrates server action into standalone api endpoint (#5122)

* chore: adjust dashboard colection segments

* test: update e2e suites

* fix(ui): prevents unnecessary calls to form state

* chore: fix finding global config fields from schema path

* fix(next): executes root POST endpoints

* chore(ui): ignores values returned by form state polling

* chore: scaffolds ssr rte

* chore: renders client leaves

* chore: server-side rendered rich text elements

* chore: defines ClientFunction pattern

* chore(ui): migrates relationship field

* chore: adds translations, cleans up slate

* chore: functional slate link

* chore: slate upload ssr

* chore: relationship slate ssr

* chore: remaining slate ssr

* chore: fixes circular workspace dep

* chore: correct broken int test import paths

* chore: remove media files from root

* chore: server renders custom edit view

* fix(ui): resolves infinite loading in versions view

* fix(next): resolves global edit view lookup

* chore: payload builds

* chore: delete unused files

* chore: removes local property from payload

* chore: adds mongodb as dev dep in db-mongodb package

* chore: hide deprecation warnings for tempfile and jest-environment-jsdom

* chore: remove all translations from translations dist

* chore: clean ts-config files

* chore: simple type fixes

* chore(ui): server renders custom list view

* chore: fix next config payload-config alias

* chore: adds turbo alias paths

* chore: adjusts translation generation

* chore: improve auth function

* chore: eslint config for packages/ui

* chore(ui): exports FormState

* chore(next): migrates account view to latest patterns

* chore: disable barbie mode

* chore(ui): lints

* chore(next): lints

* chore: for alexical

* chore: custom handler type signature adjustment

* fix: non-boolean condition result causes infinite looping (#4579)

* chore(richtext-lexical): upgrade lexical from v0.12.5 to v0.12.6 (#4732)

* chore(richtext-lexical): upgrade all lexical packages from 0.12.5 to 0.12.6

* fix(richtext-lexical): fix TypeScript errors

* fix indenting

* feat(richtext-lexical): Blocks: generate type definitions for blocks fields (#4529)

* feat(richtext-lexical)!: Update lexical from 0.12.6 to 0.13.1, port over all useful changes from playground (#5066)

* feat(richtext-lexical): Update lexical from 0.12.6 to 0.13.1, port over all useful changes from playground

* chore: upgrade lexical version used in monorepo

* chore: remove the 3

* chore: upgrade nodemon versions (#5059)

* feat: add more options to addFieldStatePromise so that it can be used for field flattening (#4799)

* feat(plugin-seo)!: remove support for payload <2.7.0 (#4765)

* chore(plugin-seo): remove test script from package.json (#4762)

* chore: upgrade @types/nodemailer from v6.4.8 to v6.4.14 (#4733)

* chore: revert auth and initPage changes

* chore(next): moves edit and list views (#5170)

* fix: "The punycode module is deprecated" warning by updating nodemailer

* chore: adjust translations tsconfig paths in root

* chore: fix merge build

---------

Co-authored-by: Jarrod Flesch <jarrodmflesch@gmail.com>
Co-authored-by: Jacob Fletcher <jacobsfletch@gmail.com>
Co-authored-by: Jarrod Flesch <30633324+JarrodMFlesch@users.noreply.github.com>
Co-authored-by: Elliot DeNolf <denolfe@gmail.com>
Co-authored-by: James <james@trbl.design>
Co-authored-by: Alessio Gravili <alessio@gravili.de>
Co-authored-by: Alessio Gravili <70709113+AlessioGr@users.noreply.github.com>
2024-02-28 13:44:17 -05:00

340 KiB

2.11.2 (2024-02-23)

Features

  • db-postgres: configurable custom schema to use (#5047) (e8f2ca4)

Bug Fixes

  • Add Context Provider in EditMany Component (#5005) (70e57fe)
  • db-mongodb: unique sparse for not required fields (#5114) (815bdfa)
  • db-postgres: set _parentID for array nested localized fields (#5117) (ceca5c4)
  • disabling API Key does not remove the key (#5145) (7a7f0ed)
  • handle thrown errors in config-level afterError hook (#5147) (32ed95e)
  • only replace the drawer content with full edit component if it exists (#5144) (0a07f60)
  • transaction error from access endpoint (#5156) (ad42d54)

2.11.1 (2024-02-16)

Features

  • db-postgres: adds idType to use uuid or serial id columns (#3864) (d6c2578)
  • db-postgres: reconnect after disconnection from database (#5086) (bf942fd)
  • plugin-search: add req to beforeSync args for transactions (#5068) (98b87e2)
  • richtext-lexical: add justify aligment to AlignFeature (#4035) (#4868) (6d6823c)
  • richtext-lexical: AddBlock handle for all nodes, even if they aren't empty paragraphs (#5063) (00fc034)
  • richtext-lexical: Update lexical from 0.12.6 to 0.13.1, port over all useful changes from playground (#5066) (0d18822)

Bug Fixes

  • db-mongodb: find versions pagination (#5091) (5d4022f)
  • db-postgres: query using blockType (#5044) (35c2a08)
  • filterOptions errors cause transaction to abort (#5079) (5f3d016)
  • plugin-form-builder: hooks do not respect transactions (#5069) (82e9d31)
  • remove collection findByID caching (#5034) (1ac943e)
  • richtext-lexical: do not remove adjacent paragraph node when inserting certain nodes in empty editor (#5061) (6323965)
  • uploads: account for serverURL when retrieving external file (#5102) (25cee8b)

⚠ BREAKING CHANGES: @payloadcms/richtext-lexical

  • richtext-lexical: Update lexical from 0.12.6 to 0.13.1, port over all useful changes from playground (#5066)
  • You HAVE to make sure that any versions of the lexical packages (IF you have any installed) match the lexical version which richtext-lexical uses: v0.13.1. If you do not do this, you may be plagued by React useContext / "cannot find active editor state" errors
  • Updates to lexical's API, e.g. the removal of INTERNAL_isPointSelection, could be breaking depending on your code. Please consult the lexical changelog.

2.11.0 (2024-02-09)

Features

  • exposes collapsible provider with more functionality (#5043) (df39602)

2.10.1 (2024-02-09)

Bug Fixes

  • clearable cells handle null values (#5038) (f6d7da7)
  • db-mongodb: handle null values with exists (#5037) (cdc4cb9)
  • db-postgres: handle nested docs with drafts (#5012) (da184d4)
  • ensures docs with the same id are shown in relationship field select (#4859) (e1813fb)
  • query relationships by explicit id field (#5022) (a0a58e7)
  • richtext-lexical: make editor reactive to initialValue changes (#5010) (2315781)

2.10.0 (2024-02-06)

Features

  • add more options to addFieldStatePromise so that it can be used for field flattening (#4799) (8725d41)
  • extend transactions to cover after and beforeOperation hooks (#4960) (1e8a6b7)
  • previousValue and previousSiblingDoc args added to beforeChange field hooks (#4958) (5d934ba)
  • re-use existing logger instance passed to payload.init (#3124) (471d211)
  • richtext-lexical: Blocks: generate type definitions for blocks fields (#4529) (90d7ee3)
  • use deletion success message from server if provided (#4966) (e3c8105)

Bug Fixes

  • db-postgres: filtering relationships with drafts enabled (#4998) (c3a3942)
  • db-postgres: handle schema changes with supabase (#4968) (5d3659d)
  • db-postgres: indexes not created for non unique field names (#4967) (64f705c)
  • db-postgres: indexes not creating for relationships, arrays, hasmany and blocks (#4976) (47106d5)
  • db-postgres: localized field sort count (#4997) (f3876c2)
  • ensures docPermissions fallback to collection permissions on create (#4969) (afa2b94)
  • migrations: safely create migration file when no name passed (#4995) (0740d50)
  • plugin-seo: tabbedUI with email field causes duplicate field (#4944) (db22cbd)

2.9.0 (2024-01-26)

Features

  • forceAcceptWarning migration arg added to accept prompts (#4874) (eba53ba)

Bug Fixes

  • afterLogin hook write conflicts (#4904) (3eb681e)
  • db-postgres: migrate down error (#4861) (dfba522)
  • db-postgres: query unset relation (#4862) (8ce15c8)
  • migrate down missing filter for latest batch (#4860) (b99d24f)
  • plugin-cloud-storage: slow get file performance large collections (#4927) (f73d503)
  • remove No Options dropdown from hasMany fields (#4899) (e5a7907)
  • upload input drawer does not show draft versions (#4903) (6930c4e)

2.8.2 (2024-01-16)

Features

  • db-postgres: support drizzle logging config (#4809) (371353f)
  • plugin-form-builder: add validation for form ID when creating a submission (#4730)
  • plugin-seo: add support for interfaceName and fieldOverrides (#4695)

Bug Fixes

  • db-mongodb: mongodb versions creating duplicates (#4825) (a861311)
  • db-mongodb: transactionOptions=false typeErrors (82383a5)
  • db-postgres: Remove duplicate keys from response (#4747) (eb9e771)
  • db-postgres: validateExistingBlockIsIdentical with arrays (3b88adc)
  • db-postgres: validateExistingBlockIsIdentical with other tables (0647c87)
  • plugin-seo: fix missing spread operator in URL generator function (#4723)
  • removes max-width from field-types class & correctly sets it on uploads (#4829) (ee5390a)

2.8.1 (2024-01-12)

Bug Fixes

  • corrects config usage in build bin script (#4796) (775502b)

2.8.0 (2024-01-12)

Features

Bug Fixes

  • allow a custom ID field to be nested inside unnamed tabs and rows (#4701) (6d5ac1d)
  • build payload without initializing (#4028) (1115387)
  • db-mongodb: limit=0 returns unpaginated (63e5c43)
  • db-postgres: totalPages value when limit=0 (5702b83)
  • migration regression (#4777) (fa3b3dd)
  • db-mongodb: migration regression (#4777) (fa3b3dd)
  • **db-postgres:**migration regression (#4777) (fa3b3dd)
  • passes draft=true in fetch for relationships (#4784) (0a259d2)
  • plugin-form-builder: replaces curly brackets with lexical editor (#4753) (8481846)
  • prioritizes value key when filtering / querying for relationships (#4727) (d0f7677)
  • text hasMany validation (#4789) (e2e56a4)

⚠ BREAKING CHANGES

@payloadcms/plugin-seo

  • remove support for payload <2.7.0 (#4765)

2.7.0 (2024-01-09)

Features

  • db-mongodb: improve transaction support by passing req to migrations (682eca2)
  • db-postgres: improve transaction support by passing req to migrations (555d027)
  • hasMany property for text fields (#4605) (f43cf18)
  • improve transaction support by passing req to migrations (1d14d9f)
  • plugin-seo: add i18n (#4665) (3027a03)
  • provide document info to ActionsProvider (#4696) (6a8a6e4)

Bug Fixes

  • adds objectID validation to isValidID if of type text (#4689) (d419275)
  • allow json field to be saved empty and reflect value changes (#4687) (0fb3a9c)
  • custom ids in versions (#4680) (5d15955)
  • custom overrides of breadcrumb and parent fields (7db58b4)
  • db-mongodb: migration error calling beginTransaction with transactionOptions false (21b9453)
  • db-mongodb: querying plan for collections ignoring indexes (#4655) (63bc4ca)
  • db-postgres: incorrect results querying json field using exists operator (9d9ac0e)
  • db-postgres: migrate down only runs latest batch size (6acfae8)
  • db-postgres: query on json properties (ec4d2f9)
  • db-postgres: validation prevents group fields in blocks (#4699) (cab6bab)
  • non-boolean condition result causes infinite looping (#4579) (a3e7816)
  • plugin-form-builder: slate serializer should replace curly braces in links (#4703) (28a3012)
  • plugin-nested-docs: breadcrumbsFieldSlug used in resaveSelfAfterCreate hook (a5a91c0)
  • plugin-nested-docs: children wrongly publishing draft data (#4692) (5539942)
  • plugin-nested-docs: custom parent field slug (635e7c2)
  • plugin-nested-docs: parent filterOptions errors when specifying breadcrumbsFieldSlug (c4a4678)
  • prevents row overflow (#4704) (9828772)
  • relations with number based ids (postgres) show untitled ID: x (1b91408)
  • sidebar fields not disabled by access permissions (#4682) (85e38b7)
  • unlock user condition always passes due to seconds conversion (#4610) (d543665)

2.6.0 (2024-01-03)

Features

  • db-mongodb: add transactionOptions (f2c8ac4)
  • extend locales to have fallbackLocales (9fac2ef)

Bug Fixes

  • "The punycode module is deprecated" warning by updating nodemailer (00d8480)
  • adjusts json field joi schema to allow editorOptions (bff4cf5)
  • db-postgres: Wait for transaction to complete on commit (#4582) (a71d37b)
  • detect language from request headers accept-language (#4656) (69a9944)
  • graphql multiple locales (98890ee)
  • navigation locks when modal is closed with esc (#4664) (be3beab)
  • req.locale and req.fallbackLocale get reassigned in local operations (aa048d5)
  • resets actions array when navigating out of view with actions (#4585) (5c55231)
  • richtext-lexical: z-index issues (#4570) (8015e99)
  • tab field error when using the same interface name (#4657) (f1fa374)

2.5.0 (2023-12-19)

Features

  • add Chinese Traditional translation (#4372) (50253f6)
  • add context to auth and globals local API (#4449) (168d629)
  • adds new actions property to admin customization (#4468) (9e8f14a)
  • async live preview urls (#4339) (5f17324)
  • pass path to FieldDescription (#4364) (3b8a27d)
  • plugin-form-builder: Lexical support (#4487) (c6c5cab)
  • prevent querying relationship when filterOptions returns false (#4392) (c1bd338)
  • richtext-lexical: improve floating select menu Dropdown classNames (#4444) (9331204)
  • richtext-lexical: improve link URL validation (#4442) (9babf68)
  • richtext-lexical: lazy import React components to prevent client-only code from leaking into the server (#4290) (5de347f)
  • richtext-lexical: Link & Relationship Feature: field-level configurable allowed relationships (#4182) (7af8f29)
  • richtext-lexical: link node: change doc data format to be consistent with relationship field (#4504) (cc0ba89)
  • richtext-lexical: rename TreeviewFeature into TreeViewFeature (#4520) (c49fd66)
  • richtext-lexical: Slate to Lexical converter: add blockquote conversion, convert custom link fields (#4486) (31f8f3c)
  • richtext-lexical: Upload html serializer: Output picture element if the image has multiple sizes, improve absolute URL creation (e558894)

Bug Fixes

  • adds bg color for year/month select options in datepicker (#4508) (07371b9)
  • correctly fetches externally stored files when passing uploadEdits (#4505) (228d45c)
  • cursor jumping around inside json field (#4453) (6300037)
  • db-mongodb: documentDB unique constraint throws incorrect error (#4513) (05e8914)
  • db-postgres: findOne correctly querying with where queries (#4550) (8bc31cd)
  • db-postgres: querying nested blocks fields (#4404) (6e9ae65)
  • db-postgres: sorting on a not-configured field throws error (#4382) (dbaecda)
  • defaultValues computed on new globals (#4380) (b6cffce)
  • disallow duplicate fieldNames to be used on the same level in the config (#4381) (a1d66b8)
  • ensure ui fields do not make it into gql schemas (#4457) (3a20ddc)
  • format fields within tab for list controls (#4516) (2650c70)
  • formats locales with multiple labels for versions locale selector (#4495) (8257661)
  • graphql schema generation for fields without queryable subfields (#4463) (13e3e06)
  • handles null upload field values (#4397) (cf9a370)
  • live-preview: populates rte uploads and relationships (#4379) (4090aeb)
  • live-preview: sends raw js objects through window.postMessage instead of json (#4354) (03a3872)
  • make admin navigation transition smoother (#4217) (eb6572e)
  • omit field default value if read access returns false (#4518) (3e9ef84)
  • pin ts-node versions which are causing swc errors (#4447) (b9c0248)
  • properly spreads collection fields into non-tabbed configs #50 (#51) (7e88159)
  • plugin-form-builder: removes use of slate in rich-text serializer (#4451) (3df52a8)
  • plugin-nested-docs: properly exports field utilities (#4462) (1cc87bd)
  • richtext-*: loosen RichTextAdapter types due to re-occuring ts strict mode errors (#4416) (48f1299)
  • richtext-lexical: Blocks field: should not prompt for unsaved changes due to value comparison between null and non-existent props (#4450) (548e78c)
  • richtext-lexical: do not add unnecessary paragraph before upload, relationship and blocks nodes (#4441) (5c2739e)
  • richtext-lexical: lexicalHTML field not working when used inside of Blocks field (128f9c4)
  • richtext-lexical: lexicalHTML field now works when used inside of row fields (#4440) (0421173)
  • richtext-lexical: not all types of URLs are validated correctly (ac7f980)
  • searching by id sends undefined in where query param (#4464) (46e8c01)
  • simplifies query validation and fixes nested relationship fields (#4391) (4b5453e)
  • updates return value of empty arrays in getDataByPath (#4553) (f3748a1)
  • upload editing error with plugin-cloud (#4170) (fcbe574)
  • upload related issues, cropping, fetching local file, external preview image (#4461) (45c472d)
  • uploads files after validation (#4218) (65adfd2)

⚠ BREAKING CHANGES

@payloadcms/richtext-lexical

  • richtext-lexical: rename TreeviewFeature into TreeViewFeature (#4520) (c49fd66)

If you import TreeviewFeature, you have to rename the import to use TreeViewFeature (capitalized "V")

  • richtext-lexical: link node: change doc data format to be consistent with relationship field (#4504) (cc0ba89)

An unpopulated, internal link node no longer saves the doc id under fields.doc.value.id. Now, it saves it under fields.doc.value. Migration inside of payload is automatic. If you are reading from the link node inside of your frontend though, you will have to adjust it.

  • richtext-lexical: improve floating select menu Dropdown classNames (#4444) (9331204)

Dropdown component has a new mandatory sectionKey prop

  • richtext-lexical: lazy import React components to prevent client-only code from leaking into the server (#4290) (5de347f)
  1. Most important: If you are updating @payloadcms/richtext-lexical to v0.4.0 or higher, you will HAVE to update payload to the latest version as well. If you don't update it, payload likely won't start up due to validation errors. It's generally good practice to upgrade packages prefixed with @payloadcms/ together with payload and keep the versions in sync.

  2. @payloadcms/richtext-slate is not affected by this.

  3. Every single property in the Feature interface which accepts a React component now no longer accepts a React component, but a function which imports a React component instead. This is done to ensure no unnecessary client-only code is leaked to the server when importing Features on a server. Here's an example migration:

Old:

import { BlockIcon } from '../../lexical/ui/icons/Block'
...
Icon: BlockIcon,

New:

// import { BlockIcon } from '../../lexical/ui/icons/Block' // <= Remove this import
...
Icon: () =>
  // @ts-expect-error
  import('../../lexical/ui/icons/Block').then((module) => module.BlockIcon),

Or alternatively, if you're using default exports instead of named exports:

// import BlockIcon from '../../lexical/ui/icons/Block' // <= Remove this import
...
Icon: () =>
  // @ts-expect-error
  import('../../lexical/ui/icons/Block'),
  1. The types for SanitizedEditorConfig and EditorConfig have changed. Their respective lexical property no longer expects the LexicalEditorConfig. It now expects a function returning the LexicalEditorConfig. You will have to adjust this if you adjusted that property anywhere, e.g. when initializing the lexical field editor property, or when initializing a new headless editor.

  2. The following exports are now exported from the @payloadcms/richtext-lexical/components subpath exports instead of @payloadcms/richtext-lexical:

  • ToolbarButton
  • ToolbarDropdown
  • RichTextCell
  • RichTextField
  • defaultEditorLexicalConfig

You will have to adjust your imports, only if you import any of those properties in your project.

@payloadcms/richtext-*

@payloadcms/richtext-lexical 0.4.1 (2023-12-07)

@payloadcms/richtext-slate 1.3.1 (2023-12-07)

Bug Fixes

  • richtext-*: loosen RichTextAdapter types due to re-occuring ts strict mode errors (#4416) (48f1299)
  • richtext-lexical: lexicalHTML field not working when used inside of Blocks field (128f9c4)

2.4.0 (2023-12-06)

Features

  • add Chinese Traditional translation (#4372) (50253f6)
  • async live preview urls (#4339) (5f17324)
  • pass path to FieldDescription (#4364) (3b8a27d)
  • richtext-lexical: lazy import React components to prevent client-only code from leaking into the server (#4290) (5de347f)
  • richtext-lexical: Link & Relationship Feature: field-level configurable allowed relationships (#4182) (7af8f29)

Bug Fixes

  • db-postgres: sorting on a not-configured field throws error (#4382) (dbaecda)
  • defaultValues computed on new globals (#4380) (b6cffce)
  • handles null upload field values (#4397) (cf9a370)
  • live-preview: populates rte uploads and relationships (#4379) (4090aeb)
  • live-preview: sends raw js objects through window.postMessage instead of json (#4354) (03a3872)
  • simplifies query validation and fixes nested relationship fields (#4391) (4b5453e)
  • upload editing error with plugin-cloud (#4170) (fcbe574)
  • uploads files after validation (#4218) (65adfd2)

⚠ BREAKING CHANGES

  • richtext-lexical: lazy import React components to prevent client-only code from leaking into the server (#4290)

⚠️ @payloadcms/richtext-lexical

Most important: If you are updating @payloadcms/richtext-lexical to v0.4.0 or higher, you will HAVE to update payload to the latest version as well. If you don't update it, payload likely won't start up due to validation errors. It's generally good practice to upgrade packages prefixed with @payloadcms/ together with payload and keep the versions in sync.

@payloadcms/richtext-slate is not affected by this.

Every single property in the Feature interface which accepts a React component now no longer accepts a React component, but a function which imports a React component instead. This is done to ensure no unnecessary client-only code is leaked to the server when importing Features on a server. Here's an example migration:

Old:

import { BlockIcon } from '../../lexical/ui/icons/Block'
...
Icon: BlockIcon,

New:

// import { BlockIcon } from '../../lexical/ui/icons/Block' // <= Remove this import
...
Icon: () =>
  // @ts-expect-error
  import('../../lexical/ui/icons/Block').then((module) => module.BlockIcon),

Or alternatively, if you're using default exports instead of named exports:

// import BlockIcon from '../../lexical/ui/icons/Block' // <= Remove this import
...
Icon: () =>
  // @ts-expect-error
  import('../../lexical/ui/icons/Block'),

The types for SanitizedEditorConfig and EditorConfig have changed. Their respective lexical property no longer expects the LexicalEditorConfig. It now expects a function returning the LexicalEditorConfig. You will have to adjust this if you adjusted that property anywhere, e.g. when initializing the lexical field editor property, or when initializing a new headless editor.

The following exports are now exported from the @payloadcms/richtext-lexical/components subpath exports instead of @payloadcms/richtext-lexical:

  • ToolbarButton
  • ToolbarDropdown
  • RichTextCell
  • RichTextField
  • defaultEditorLexicalConfig

You will have to adjust your imports, only if you import any of those properties in your project.

2.3.1 (2023-12-01)

Bug Fixes

  • ensure doc controls are not hidden behind lexical field (#4345) (bea79fe)
  • query validation on relationship fields (#4353) (fe888b5)
  • richtext-lexical: blocks content may be hidden behind components outside of the editor (#4325) (3e745e9)
  • richtext-lexical: Blocks node: incorrect conversion from v1 node to v2 node (ef84a2c)

2.3.0 (2023-11-30)

Features

  • add serbian (latin and cyrillic) translations (#4268) (40c8909)
  • db-mongodb: search for migrations dir intelligently (530c825)
  • db-postgres: search for migrations dir intelligently (308979f)
  • live-preview: batches api requests (#4315) (d49bb43)
  • relationship sortOptions property (#4301) (224cddd)
  • support migrations with js files (2122242)
  • support OAuth 2.0 format Authorization: Bearer tokens in headers (c1eb9d1)
  • useDocumentEvents (#4284) (9bb7a88)

Bug Fixes

  • db-postgres: allow for nested block fields to be queried (#4237) (cd07873)
  • db-postgres: error saving nested arrays with versions (#4302) (3514bfb)
  • duplicate documents with required localized fields (#4236) (9da9b1f)
  • incorrect key property in Tabs field component (#4311) (3502ce7), closes #4282
  • live-preview-react: removes payload from peer deps (7e1052f)
  • live-preview: compounds merge results (#4306) (381c158)
  • live-preview: property resets rte nodes (#4313) (66679fb)
  • live-preview: re-populates externally updated relationships (#4287) (57fc211)
  • live-preview: removes payload from peer deps (b4af95f)
  • properly exports useDocumentsEvents hook (#4314) (5420963)
  • properly sets tabs key in fieldSchemaToJSON (#4317) (9cc88bb)
  • richtext-lexical: HTML Converter field not working inside of tabs (#4293) (5bf6493)
  • richtext-lexical: re-use payload population logic to fix population-related issues (#4291) (094d02c)
  • richtext-slate: add use client to top of tsx files importing from payload core (#4312) (d4f28b1)

BREAKING CHANGES

⚠️ @payloadcms/richtext-lexical

The SlashMenuGroup and SlashMenuOption classes have changed. If you have any custom lexical Features which are adding new slash menu entries, this will be a breaking change for you. If not, no action is required from your side.

Here are the breaking changes and how to migrate:

  1. The SlashMenuOption's first argument is now used as a key and not as a display name. Additionally, a new, optional displayName property is added which will serve as the display name. Make sure your key does not contain any spaces or special characters.
  2. The title property of SlashMenuGroup has been replaced by a new, mandatory key and an optional displayName property. To migrate, you will have to remove the title property and add a key property instead - make sure you do not use spaces or special characters in the key.
  3. Additionally, if you have custom styles targeting elements inside of slash or floating-select-toolbar menus, you will have to adjust those too, as the CSS classes changed

This is an example of performing these updates

2.2.2 (2023-11-27)

Features

Bug Fixes

  • number field validation (#4233) (19fcfc2)
  • passes date options to the react-datepicker in filter UI, removes duplicate options from operators select (#4225) (3d2b62b)
  • prevent json data getting reset when switching tabs (#4123) (1dcd3a2)
  • transactions broken within doc access (443847e)
  • typo in polish translations (#4234) (56a4692)

2.2.1 (2023-11-21)

Bug Fixes

  • make outputSchema optional on richtext config (#4230) (3a784a0)

2.2.0 (2023-11-20)

Features

  • allow richtext adapters to control type generation, improve generated lexical types (#4036) (989c10e)
  • hide publish button based on permissions (#4203) (de02490)
  • richtext-lexical: Add new position: 'top' property for plugins (eed4f43)

Bug Fixes

  • fully define the define property for esbuild string replacement (#4099) (e22b95b)
  • i18n: polish translations (#4134) (782e118)
  • improves live preview breakpoints and zoom options in dark mode (#4090) (b91711a)
  • plugin-nested-docs: await populate breadcrumbs on resaveChildren (#4226) (4e41dd1)
  • rename tab button classname to prevent unintentional styling (#4121) (967eff1)
  • richtext-lexical: add missing 'use client' to TestRecorder feature plugin (fc26275)
  • richtext-lexical: Blocks: Array row data is not removed (#4209) (0af9c4d)
  • richtext-lexical: Blocks: fields without fulfilled condition are now skipped for validation (50fab90)
  • richtext-lexical: Blocks: make sure fields are wrapped in a uniquely-named group, change block node data format, fix react key error (#3995) (c068a87)
  • richtext-lexical: Blocks: z-index issue, e.g. select field dropdown in blocks hidden behind blocks below, or slash menu inside nested editor hidden behind blocks below (09f17f4)
  • richtext-lexical: Floating Select Toolbar: Buttons and Dropdown Buttons not clickable in nested editors (615702b), closes #4025
  • richtext-lexical: HTMLConverter: cannot find nested lexical fields (#4103) (a6d5f2e), closes #4034
  • richtext-lexical: incorrect caret positioning when selecting second line of multi-line paragraph (#4165) (b210af4)
  • richtext-lexical: make lexicalHTML() function work for globals (dbfc835)
  • richtext-lexical: nested editor may lose focus when writing (#4139) (859c2f4)
  • richtext-lexical: remove optional chaining after this as transpilers are not handling it well (#4145) (2c8d34d)
  • richtext-lexical: visual bug after rearranging blocks (a6b4860)
  • simplifies block/array/hasMany-number field validations (#4052) (803a37e)
  • synchronous transaction errors (#4164) (1510baf)
  • thread locale through to access routes from admin panel (#4183) (05f3169)
  • transactionID isolation for GraphQL (#4095) (195a952)
  • upload fit not accounted for when editing focal point or crop (#4142) (45e9a55)

2.1.1 (2023-11-10)

Bug Fixes

  • conditionally hide dot menu in DocumentControls (#4075) (cef4cbb)
  • disable editing option for svg image types (#4071) (949e265)
  • fixes creation of related documents within a transaction if filterOptions is used (#4087) (acad288)
  • hide empty image sizes from the preview drawer (#3946) (687f485)
  • live-preview: ensures field schema exists before traversing fields (#4074) (7059a71)
  • live-preview: field recursion and relationship population (#4045) (2ad7340)
  • live-preview: properly handles apiRoute (#4076) (1f851f2)
  • plugin-nested-docs: sync write transaction errors (#4084) (47efd3b)
  • possible issue with access control not using req (#4086) (348a70c)
  • richtext-lexical: Blocks: unnecessary saving node value when initially opening a document & new lexical tests (#4059) (fff377a)
  • richtext-lexical: floating select toolbar caret not positioned correctly if first line is selected (#4062) (c462df3)

2.1.0 (2023-11-08)

Features

  • add internationalization (i18n) to locales (#4005) (6a0a859)
  • Custom Error, Label, and before/after field components (#3747) (266c327)

Bug Fixes

  • error on graphql multiple queries (#3985) (57da3c9)
  • focal and cropping issues, adds test (#4039) (acba5e4)
  • handle invalid tokens in refresh token operation (#3647) (131d89c)
  • hasMany number and select fields unable to save within arrays (#4047) (182c57b)
  • injects array and block ids into fieldSchemaToJSON (#4043) (d068ef7)
  • parse predefined migrations via file arg or name prefix (#4001) (eb42c03)
  • polymorphic hasMany relationships missing in postgres admin (#4053) (7a9af44)
  • resets list filter row when the filter on field is changed (#3956) (8d14c21)
  • Update API Views (b008b6c)
  • vite not replacing env vars correctly when building (67b3baa)

2.0.15 (2023-11-03)

Bug Fixes

  • autosave updating data in unrelated docs (b722f20)
  • better error handling within parseCookies (#3720) (6b1b4ff)
  • block row removal w/ db-postgres adapter (#3951) (5ea88bb)
  • deeply merges view configs (#3954) (a5b2333)
  • do not display field if read permission is false - admin panel ui (#3949) (cdc10be)
  • ensures dataloader does not run requests in parallel (4607dbf)
  • exclude files from dev bundle if aliased (#3957) (7966692)
  • field paths being mutated if they ended with the req.locale (#3936) (36576f1)
  • findVersions pagination (#3906) (1f8f173)
  • global autosave and relevant e2e test (a9d96b1)
  • i18n: polish translations (#3934) (e4881bb)
  • passes correct data to buildStateFromSchema on account page (#3984) (c7a315a)
  • prevent sort from saving a new version in version list view (#3944) (900a9ea)
  • properly load temp files into buffer (#3996) (d1a0822)
  • sort document tabs by order (#3968) (06cd52b)
  • vertical alignment in step nav when using larger logos (#3955) (b6d9a20)

2.0.14 (2023-10-30)

Bug Fixes

  • adds null to non-required field unions (#3870) (7e919aa)
  • checks for user before accessing properties in preferences update operation(#3844) (24eab3a)
  • db-mongodb: improve find query performance (#3836) (56e58e9), closes #3904
  • db-mongodb: versions pagination (#3875) (4f2b080)
  • disable webpack hot reload on production (#3891) (422c803)
  • duplicate document copying to incorrect locale (#3874) (89f273b)
  • enables nested AND/OR queries (#3834) (237eebd)
  • ensure serverURL has string value for getBaseUploadFields function (#3900) (c564a83)
  • ensures compare-version select field cannot be cleared (#3901) (42d8d11)
  • error handling when duplicating documents fails (#3873) (435eb62)
  • generate new block ids on create (#3871) (3404bab)
  • global permissions for live preview (#3854) (3032e0b)
  • handles null & undefined relationship field values in versions view (#3609) (115e592)
  • incorrect duplication of data in admin ui (#3907) (46fc41c)
  • only apply focal manipulation when necessary (#3902) (a4f36aa)
  • graphql query errors transaction race condition (#3795) (dc13b10)
  • removes conditional return of formattedEmails in sendEmail hook #26 (#28) (e8458f8)
  • resize image if no aspect ratio change (#3859) (f53b713)
  • richtext-*: type issues with typescript strict mode enabled (dac9514)
  • richtext-lexical: Blocks node incorrectly marked as client module (35f00fa)
  • richtext-lexical: remove unnecessary dependencies (fixes #3889) (760565f)
  • set date to 12UTC for default, dayOnly and monthOnly fields (#3887) (d393225)
  • store resized image on req or tempFilePath (#3883) (6c5d525)
  • unique field error handling (#3888) (4d8d4c2)

2.0.13 (2023-10-24)

Bug Fixes

  • adjusts props to accept components for before and after fields instead of functions (#3820) (c476d01)
  • alignment of collapsible within row (#3822) (eaef0e7)
  • named tabs not appearing in the gql mutation input type (#3835) (a0019d0)
  • only parses live preview ready message when same origin (#3791) (e8f2377)
  • prevent storing duplicate user preferences (#3833) (7eee0ec)
  • prevents document sidebar from collapsing (71a3e5b)
  • renders live preview for globals (#3801) (a13ec2e)
  • reverting localized versions (#3831) (5a0d0db)

2.0.12 (2023-10-23)

Features

  • collection, global and field props for hooks, fix request context initialization, add context to global hooks (#3780)
  • richtext-lexical: HTML Serializer (#3685)

Bug Fixes

  • remove duplicate removal of temp upload file (#3818)
  • simplify how the search input and query params are connected (#3797)
  • standardizes layout of document fields (#3798)
  • issue where dragging unsortable item would crash the page (#3789)
  • richtext-lexical: defaultValue property didn't fit into field schema (b5c7bbed9)
  • richtext-*: hasMany relationships not populated correctly (e197e0316)

2.0.11 (2023-10-19)

Features

  • add ability to opt out of type gen declare statement (#3765)

Bug Fixes

  • corrects versions collection casing (#3739)

  • updates req after file resize (#3754)

  • correctly renders focal point when crop is set to false (#3759)

  • account for many slug types in generate types (#3698)

  • handle graphQL: false on globals when building policy type (#3729)

  • renders id as fallback title in DeleteDocument (#3745)

  • properly handles hideAPIURL (#3721)

  • filesRequiredOnCreate typing, tests, linting (#3737)

  • webpack-bundler: corrects payload alias (#3769)

  • bundler-webpack: better node_modules resolution (#3744)

  • db-postgres: block and array inserts error (#3714)

  • live-preview: properly handles uploads and hasOne monomorphic relationships (#3719)

2.0.10 (2023-10-17)

Features

Bug Fixes

  • Register first user verify update missing transaction id / req (#3665) (68c5a5751)

2.0.8 (2023-10-17)

Features

  • allows filterOptions to return null (c4cac99)
  • live-preview: caches field schema (#3711) (dd0ac06)

Bug Fixes

  • autosave time shown minutes only (#3492) (e311e8f)
  • blocks within groups in postgres (45a62ba)
  • bug with seeding ecommerce (993568a)
  • corrects add block index (#3681) (3c50443)
  • misc upload crop/focal point updates (#3580) (d616772)
  • renders mobile document controls (#3695) (1625ff2)
  • some local operations missing req.transactionID (#3651) (150799e)
  • richtext-*: extra fields not being iterated correctly (#3693) (b8a5866)
  • richtext-*: link drawer form receiving incorrect field schema (#3696) (cb39354)
  • richtext-lexical: #3682 isolated editor container causing z-index issues (24918fe)
  • templates: user access control (#3712) (8b8ceab)

2.0.6 (2023-10-14)

Bug Fixes

2.0.5 (2023-10-12)

Bug Fixes

Documentation

2.0.4 (2023-10-12)

Bug Fixes

Documentation

2.0.3 (2023-10-09)

Bug Fixes

Documentation

  • move payload script mention to top of migrations (26967fb92)
  • payload script in package.json (2f86c196e)
  • updates required node version (70e068b18)
  • improves custom views (#3499) (6c17222a6)

2.0.2 (2023-10-09)

Bug Fixes

  • beforeOperation hooks now correctly only run once (e5d6a75)

2.0.1 (2023-10-09)

Bug Fixes

  • fix: richtext adapter types (#3497) (7679e3f0a)

Documentation

  • remove --save flag for install command (f7c35df6d)
  • updates live preview docs (ca97f692c)
  • fixes label for rich text overview (7df1256bf)

2.0.0 (2023-10-09)

Features

  • New database adapter pattern
  • Official Postgres adapter released, built on Drizzle ORM
  • Database transactions added
  • Full, first-party migration support added
  • The admin UI has been redesigned to be more extensible and offer more horizontal real estate
  • Admin UI sidebar is now collapsible
  • Live preview added to admin UI, including usable frontend hooks
  • New "Views" API added, which allows for custom sub-views on List and Edit views within Admin UI
  • New bundler adapter pattern released
  • Official Vite bundler released
  • Offical Lexical rich text adapter released
  • Lexical rich text editor now supports drag and drop of rich text elements
  • Lexical rich text now supports Payload blocks directly within rich text editor
  • Upload image cropping added
  • Upload "focal point" controls added
  • New "API" view added to Edit view(s), allowing for quick and customizable references to API response
  • MongoDB draft querying has been significantly improved and is now much faster
  • Arabic / RTL UI support added
  • Locales can now be further configured to accept settings like rtl, human-friendly labels, etc.
  • The tsconfig path pointing to your generated Payload types is no longer required for types to work

BREAKING CHANGES

⚠️ You now need to provide your Payload config with a database, a bundler, and a rich text adapter

Here's an example of a barebones Payload config, set up to work as 1.0 did:

import { mongooseAdapter } from "@payloadcms/db-mongodb";
import { slateEditor } from "@payloadcms/richtext-slate";
import { webpackBundler } from "@payloadcms/bundler-webpack";
import { buildConfig } from "payload/config";

export default buildConfig({
  admin: {
    bundler: webpackBundler(),
  },
  editor: slateEditor({}),
  collections: [
    // your collections here
  ],
  db: mongooseAdapter({
    url: process.env.DATABASE_URI,
  }),
});

These new properties are all now required for Payload to function, and you will have to install each separate adapter that you use. Feel free to swap out any of the adapters with your choice (Lexical, Postgres, Vite, etc.)

Make sure to install the packages that you need. In the above example, you would need to install the following:

npm install --save @payloadcms/db-mongodb @payloadcms/richtext-slate @payloadcms/bundler-webpack

⚠️ Draft versions now require a latest: true property to be set on the most recent draft in your _versions collections(s)

We have a ready-to-go migration script for your versions from v1 to v2, and to use it, all you have to do is run the following commands:

1. First, make sure you have a payload npm script in your package.json

{
  "scripts": {
    "payload": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload"
  }
}

Adjust the PAYLOAD_CONFIG_PATH to point to your Payload config file if necessary.

2. Create a migration, using the new Payload migration API

npm run payload migrate:create --file @payloadcms/db-mongodb/versions-v1-v2

The above command will output a migration file into your ./src/migrations folder (default migrations location). It contains a migration script to automatically add a latest: true flag to each of your newest drafts, for all draft-enabled collections. It works out of the box!

3. Run migrations

From there, you need to run migrations. Run the following command to execute your new migration:

npm run payload migrate

And you'll be all good!

⚠️ Array and block field validations now accept the full array of field data as their validation argument instead of the value.length

This change should only affect you if you have a custom array / block validation defined.

⚠️ For MongoDB, all models have been moved from the Payload object to the database adapter

For example, if you are leveraging Mongoose models directly, in 1.0, you would have accessed them via payload.collections[myCollectionSlug].Model. Now, you can access the Mongoose model from payload.db.collections[myCollectionSlug].

Version models can be accessed from payload.db.versions[myEntitySlug], and the global model can be accessed via payload.db.globals.

⚠️ User preferences data shape has changed, and you will lose preferences unless you manually migrate them to the new shape

We don't have a migration ready to go yet for user preferences, and this typically wouldn't be a big deal for most Payload projects. So don't let it stop you from updating unless you have a serious amount of user preferences that you'd like to keep. If so, we'll come up with a migration script for you and hook you up. Just reach out to us on Discord to ask for this.

⚠️ Node 16 is now the minimum required node version and Node 14 is no longer supported

Pretty self-explanatory on this one. Node 14 is old.

⚠️ The Pino logger has been updated, which may require you to make changes to your Pino config if you have a custom one

If you don't have anything custom with the Pino logger, this does not apply to you.

⚠️ Transactions are now enabled by default if your database supports them

MongoDB requires a replica set for transactions to work, so they likely are not going to work for you unless you do indeed have a replica set configured. But if you do, transactions will now instantly work for all internal Payload operations.

This means that in some fringe cases, if you are creating a doc and then instantly trying to update it within an afterChange hook, the newly created doc may not truly exist yet. This should not cause any problems for 99% of projects, but if you think this applies to you, might be good to double-check through your code.

To avoid any issues, you can pass the req.transactionID through to your Local API calls, so that your Local API calls are included as part of the parent transaction.

⚠️ Locales now have more functionality, and in some places, you might need to update custom code

Payload's locales have become more powerful and now allow you to customize more aspects per locale such as a human-friendly label and if the locale is RTL or not.

This means that certain functions now return a different shape, such as useLocale. This hook used to return a string of the locale code you are currently editing, but it now returns an object with type of Locale.

⚠️ Admin panel CSS classes may have changed

The revisions we've made in 2.0 required changes to both HTML and CSS within the admin panel. For this reason, if you were loading custom CSS into the admin panel to customize the look and feel, your stylesheets may need to be updated. If your CSS is targeting elements on the page using HTML selectors or class names, you may need to update these selectors based on the current markup. It may also be necessary to update your style definitions if the core Payload component you are targeting has undergone significant change.

In many cases, our classnames and structure have remained the same, but technically, this could be a breaking change.

⚠️ Custom admin views API has changed

These changes only affect apps that are using custom views via the admin.components.routes config.

The type AdminRoute was renamed to AdminViewConfig. Simply update your instances with this new type and it will continue to work as expected. The properties of this type have not changed.

The admin.components.routes config has been merged with admin.components.views. Simply move your custom views to the views object. The properties of the config have not changed. Here is an example:

Previous:

admin: {
  components: {
    routes: [
      {
        Component: MyCustomView,
        path: "/custom-view",
      },
    ];
  }
}

Current:

admin: {
  components: {
    views: {
      MyCustomView: {
        Component: MyCustomView,
        path: '/custom-view'
      }
    }]
  }
}

⚠️ Rich text admin properties have moved

If you have customized the Slate rich text editor via admin.elements or admin.leaves properties, you now need to add your customizations to a slateEditor({ admin: {} }) property. The signatures are all the same, but you might have to move some properties around.

Previous:

const myRichTextField: Field = {
  name: "content",
  type: "richText",
  admin: {
    elements: [
      "h1",
      "link",
      // etc
    ],
  },
};

Current:

import { slateEditor } from "@payloadcms/richtext-slate";

const myRichTextField: Field = {
  name: "content",
  type: "richText",
  editor: slateEditor({
    // Move the admin property as shown below
    admin: {
      elements: [
        "h1",
        "link",
        // etc
      ],
    },
  }),
};

⚠️ MongoDB connection options have been removed from payload.init

To pass connection options for MongoDB, you now need to pass them to db: mongooseAdapter({}) instead of passing them to payload.init().

⚠️ Some types have changed locations

If you are importing types from Payload, some of their locations may have changed. An example would be Slate-specific types being no longer exported from Payload itself—they are now exported from the @payloadcms/richtext-slate package.

Recap

That's it! Most of these changes will be instantly apparent to you thanks to TypeScript, and many may not apply to you at all. But this list should be comprehensive and we will do our best to keep everything up-to-date here accordingly. There are inevitably some types that have changed locations, and similar things like that, but overall, you should be able to swing the breaking changes and get updated.

If you need a hand, reach out on Discord and we will hook you up!

1.14.0 (2023-08-16)

Bug Fixes

  • DatePicker showing only selected day by default (#3169) (edcb393)
  • only allow redirects to /admin sub-routes (c0f05a1)
  • passes in height to resizeOptions upload option to allow height resize (#3171) (7963d04)
  • WhereBuilder component does not accept all valid Where queries (#3087) (fdfdfc8)

Features

1.13.4 (2023-08-11)

Bug Fixes

  • correctly passes block path inside buildFieldSchemaMap (#3162) (3c60abd)

1.13.3 (2023-08-11)

Bug Fixes

  • unable to add arrays inside secondary named tabs (#3158) (cb04d4a)

1.13.2 (2023-08-10)

1.13.1 (2023-08-08)

Bug Fixes

  • updates addFieldRow and replaceFieldRow rowIndex insertion (#3145) (f5cf546)

1.13.0 (2023-08-08)

Bug Fixes

Features

1.12.0 (2023-08-04)

Bug Fixes

  • excludes useAsTitle field from searchableFields in collection view (#3105) (8c4d251)
  • relationship field filter long titles (#3113) (da27a8a)
  • wrong links in verification and forgot password emails if serverURL not set (#3010) (6a189c6)

Features

  • add support for sharp resize options (#2844) (144bb81)
  • allows for upload relationship drawer to be opened (#3108) (ea73e68)
  • option to pre-fill login credentials automatically (#3021) (c5756ed)
  • programmatic control over array and block rows inside the form (#3110) (a78c463)
  • set JWT token field name with saveToJWT (#3126) (356f174)

1.11.8 (2023-07-31)

1.11.7 (2023-07-27)

Bug Fixes

Features

  • ability to add context to payload's request object (#2796) (67ba131)

1.11.6 (2023-07-25)

Bug Fixes

  • collections:admin: Enable adminThumbnail fn execution on all types (2c74e93)
  • threads hasMaxRows into ArrayAction components within blocks and arrays (#3066) (d43c83d)

1.11.5 (2023-07-25)

Bug Fixes

  • admin route not mounting on production serve (#3071) (e718668)

1.11.4 (2023-07-25)

Bug Fixes

  • if arrayFieldType rows are undefined, page would crash (#3049) (08377cc)

Features

1.11.3 (2023-07-19)

Bug Fixes

Features

1.11.2 (2023-07-14)

Features

  • adds array, collapsible, tab and group error states (4925f90)

1.11.1 (2023-07-11)

Bug Fixes

  • #2980, locale=all was not iterating through arrays / blocks (d6bfba7)
  • anchor Button component respect margins (#2648) (1877d22)

1.11.0 (2023-07-05)

Bug Fixes

  • ensures fields within blocks respect field level access control (#2969) (5b79067)
  • ensures rows always have id's (#2968) (04851d0)
  • GraphQL type for number field (#2954) (29d8bf0)
  • nested richtext bug and test (#2966) (801f609)
  • properly threads custom react-select props through relationship field (#2973) (79393e8)

Features

1.10.5 (2023-06-30)

Bug Fixes

1.10.4 (2023-06-30)

Features

  • add locale to displayed API URL (b22d157)

1.10.3 (2023-06-30)

Bug Fixes

  • #2937, depth not being respected in graphql rich text fields (f84b432)
  • shows updatedAt date when selecting a version to compare from dropdown (3c9dab3)

1.10.2 (2023-06-26)

Bug Fixes

  • adjusts swc loader to only exclude non ts/tsx files - #2888 (#2907) (a2d9ef3)
  • autosave on localized fields, adds test (6893231)
  • broken export of entityToJSONSchema (#2894) (837dccc)
  • correctly scopes data variable within bulk update - #2901 (#2904) (f627277)
  • safely check for tempFilePath when updating media document (#2899) (8206c0f)

1.10.1 (2023-06-22)

Bug Fixes

1.10.0 (2023-06-20)

Bug Fixes

  • #2831, persists payloadAPI through local operations that accept req (85d2467)
  • #2842, querying number custom ids with in (116e9ff)
  • default sort with near operator (#2862) (99f3809)
  • deprecate min/max in exchange for minRows and maxRows for relationship field (#2826) (0d8d7f3)
  • drawer close on backspace (#2869) (a110ba2)
  • drawer fields are read-only if opened from a hasMany relationship (#2843) (542b536)
  • fields in relationship drawer not usable #2815 (#2870) (8626dc6)
  • mobile loading overlay width #2866 (#2867) (ba9d633)
  • near query sorting by distance and pagination (#2861) (1611896)
  • relationship field query pagination (#2871) (ce84174)
  • slow like queries with lots of records (4dd703a)

Features

1.9.5 (2023-06-16)

1.9.4 (2023-06-16)

Bug Fixes

  • incorrectly return totalDocs=1 instead of the correct count when pagination=false (2e73938)

1.9.3 (2023-06-16)

Bug Fixes

  • adds custom property to ui field in joi validation (#2835) (56d7745)
  • ensures relations to object ids can be queried on (c3d6e1b)

1.9.2 (2023-06-14)

Bug Fixes

1.9.1 (2023-06-09)

Features

  • adds option to customize filename on upload (596eea1)
  • collection list view custom components: BeforeList, BeforeListTable, AfterListTable, AfterList (#2792) (38e962f)

1.9.0 (2023-06-07)

Features

1.8.6 (2023-06-07)

Bug Fixes

  • #2711 index sortable field global versions fields (#2775) (576af01)
  • #2767 bulk operations missing locales in admin requests (e30871a)
  • #2771 relationship field not querying all collections (#2774) (8b767a1)
  • adjusts activation constraint of draggable nodes (#2773) (863be3d)
  • flattens relationships in the update operation for globals #2766 (#2776) (3677cf6)
  • improperly typing optional arrays with required fields as required (f1fc305)
  • read-only Auth fields (#2781) (3c72f33)
  • read-only Auth fields (#2781) (60f5522)
  • recursiveNestedPaths not merging existing fields when hoisting row/collapsible fields (#2769) (536d701)

1.8.5 (2023-06-03)

Features

  • allows objectid through relationship validation (42afa6b)

1.8.4 (2023-06-02)

Features

Bug Fixes

1.8.3 (2023-05-24)

Bug Fixes

  • #2662, draft=true querying by id (3b78ab0)
  • #2685, graphql querying relationships with custom id (9bb5470)
  • adds credentials to doc access request (#2705) (c716954)
  • prevents add new relationship modal from adding duplicative values to the parent doc #2688 (a2a8ac9)
  • unable to clear relationships or open relationship drawer on mobile #2691 #2692 (782f8ca)

1.8.2 (2023-05-10)

Bug Fixes

1.8.1 (2023-05-10)

Bug Fixes

Features

  • allow users to manipulate images without needing to resize them (#2574) (8531687)
  • export additional graphql types (#2610) (3f185cb)

1.8.0 (2023-05-09)

Bug Fixes

  • correct casing on graphql type (219f50b)
  • defaultValue missing from Upload field schema (7b21eaf)
  • ensures nested querying works when querying across collections (09974fa)
  • query custom text id fields (967f2ac)
  • removes deprecated queryHiddenFIelds from local API docs (5f30dbb)
  • removes queryHiddenFields from example Find operation (fb4f822)
  • resolve process/browser package in webpack config (02f27f3)
  • Row groups in tabs vertical alignment (#2593) (54fac4a)
  • softens columns and filters pill colors (#2642) (9072096)
  • webp upload formatting (ccd6ca2)

Features

1.7.5 (2023-05-04)

Bug Fixes

  • make incrementName match multiple digits (#2609) (8dbf0a2)

Features

1.7.4 (2023-05-02)

Bug Fixes

1.7.3 (2023-05-01)

Bug Fixes

Features

1.7.2 (2023-04-25)

Bug Fixes

  • #2521, graphql AND not working with drafts (e67ca20)
  • document drawer access control #2545 (439caf8)
  • prevent floating point number in image sizes (#1935) (7fcde11)
  • prevent sharp toFormat settings fallthrough by using clone (#2547) (90dab3c)
  • query localized fields without localization configured (12edb1c)
  • read-only styles (823d022)

Features

  • add rich-text blockquote element, change quote node type to blockquote (ed230a4)
  • add user to field conditional logic (274edc7)
  • exposes id in conditional logic (c117b32)
  • imageresizer: add trim options (#2073) (0406548)

1.7.1 (2023-04-18)

Bug Fixes

  • adds 'use client' for next 13 compatibility (5e02985)
  • graphql variables not being passed properly (72be80a)

Features

  • configuration extension points (023719d)

1.7.0 (2023-04-17)

Features

  • feat: exposes new replaceState form api (52ae6f06a)
  • feat: support email configuration in payload config (#2485) (042e58ea2)
  • feat: refactors buildQuery to rely on fields instead of mongoose (d187b809d)
  • feat: add admin.hidden to collections and globals (#2487) (81d69d1b6)
  • feat: replace deprecated express-graphql dependency (#2484) (cd548a6e2)
  • feat: supports null preview url #2472 (e8a24fd2e)
  • feat: migrates form builder example nextjs to examples (28ecb0c5e)

Bug Fixes

  • fix: #2494, reduces versions caused by reverting to published with autosave: true (e0c0b2fdf)
  • fix: incorrect version defaults (3f9bbe90b)
  • fix: hides preview button until document is saved #2476 (#2477) (f9b8e2dbc)
  • fix: corrects sidebar spacing in collection and global edit views #2478 (a45ab8bd7)
  • fix: use correct locale when querying relationships for list view (#2438) (15442a9cc)
  • fix: proper height data for animated gifs (#2506) (aee6ca05c)
  • fix: Clear blocks modal search input when closing the modal (#2501) (0f8051b57)
  • fix: excess padding on textarea (#2488) (6ceb79189)
  • fix: increase line height for global title (#2465) (19ce0d79e)
  • fix: uses docPermissions to show/hide x button on media collection doc fileDetails - #2428 (7f2c3d1d0)
  • fix: prevents rendering of version actions when a user does not have permission (13cc669e2)
  • fix: properly awaits email send to catch potential errors #2444 (#2470) (11a6ce6d3)

1.6.32 (2023-04-05)

Features

  • only uses sharp if required (f9f6ec4)

1.6.31 (2023-04-04)

Bug Fixes

  • ensures select hasMany does not get mutated on patch operations (3a6acf3)

Features

  • improves required type accuracy (a9cd23a)

1.6.30 (2023-04-03)

Bug Fixes

  • incorrect type local api using delete with where (de5ceb2)
  • originalDoc being mutated in beforeChange field hooks (888bbf2)

1.6.29 (2023-03-31)

Bug Fixes

  • update and delete local API return types (#2434) (02410a0)

1.6.28 (2023-03-28)

Bug Fixes

  • potential memory leak with probe-image-size (8eea0d6)

1.6.27 (2023-03-27)

Bug Fixes

  • #2355, select field not fully visible on small screens in certain scenarios (07eb8dd)
  • #2384, preserves manually set verified from admin UI (72a8b1e)
  • hide fields with admin.hidden attribute (ad25b09)
  • make update typing a deep partial (#2407) (e8dc7d4)
  • restoring version did not correctly create new version from result (6ca12b1)
  • textarea field overlap in UI (1c8cf24)

1.6.25 (2023-03-24)

Bug Fixes

1.6.24 (2023-03-23)

Features

1.6.23 (2023-03-22)

Bug Fixes

Features

  • adds title attribute to ThumbnailCard (#2368) (a8766d0)
  • exposes defaultSort property for collection list view (#2382) (1f480c4)

1.6.22 (2023-03-15)

1.6.21 (2023-03-15)

Bug Fixes

1.6.20 (2023-03-13)

Bug Fixes

  • allow thumbnails in upload gallery to show useAsTitle value (aae6d71)
  • allows useListDrawer to work without collectionSlugs defined (e1553c2)
  • cancels existing fetches if new fetches are started (ccc92fd)
  • check relationships indexed access for undefined (959f017)
  • ensures documentID exists in doc documentDrawers (#2304) (566c45b)
  • flattens title fields to allow seaching by title if title inside Row field (75e776d)
  • keep drop zone active when hovering inner elements (#2295) (39e303a)
  • Prevent browser initial favicon request (fd8ea88)
  • removes forced require on array, block, group ts (657aa65)
  • removes pagination type from top level admin config types (bf9929e)
  • renders presentational table columns (4e1748f)
  • undefined point fields saving as empty object (#2313) (af16415)

Features

1.6.19 (2023-03-09)

Bug Fixes

  • ensures nested fields save properly within link, upload rte (057522c)

1.6.18 (2023-03-09)

Bug Fixes

  • #2272, rich text within blocks causing crash on reorder (7daddf8)
  • allows swc/register to transpile files above current workspace (ef826c8)
  • renders row fields as table columns #2257 (b10e842)
  • table column preferences sync (a1ddd2e)

1.6.17 (2023-03-06)

Bug Fixes

  • #2150, can now query on N number of levels deep (ac54b11)
  • #2179, async default values resetting form state (a4de51a)
  • allows empty objects to be retained in db (0247e2d)
  • clear relationship value (#2188) (387cec9)
  • conditionally renders draggable pill (#2224) (812ab9f)
  • ensures sorting on drafts works in all cases (c87fd2b)
  • globals publish after draft (44651e6)
  • minimize not set to false on all field type schemas (ace032e)
  • pass result of previous hook into next hook (c661ac2)
  • properly resizes animated images (#2181) (8c4f890)
  • properly set req.payload on forgotPassword in local API (#2194) (5ac436e)
  • redirects example (#2209) (5aa203d)
  • removes duplicative fields from table columns #2221 (#2226) (474a3cb)
  • renders rte upload drawer #2178 (523d9d4)
  • skips field validation on submit if skipValidation is set to true (cf17760)
  • Validate typescript signature (8d31ed6)
  • version comparison view errors on old select value (#2163) (a3cc3c3)
  • versions table (#2235) (066f5f6)
  • virtual fields example (#2214) (f6eb020)

Features

  • Add Hungarian Translations (#2169) (ebd16e8)
  • adds min and max options to relationship with hasMany (0f38a0d)
  • drag-and-drop columns (#2142) (e2c65e3)
  • improves ui performance with thousands of fields (0779f8d)

1.6.16 (2023-02-28)

Bug Fixes

  • #2150, can now query on N number of levels deep (ac54b11)
  • #2179, async default values resetting form state (a4de51a)
  • allows empty objects to be retained in db (0247e2d)
  • clear relationship value (#2188) (387cec9)
  • ensures sorting on drafts works in all cases (c87fd2b)
  • globals publish after draft (44651e6)
  • properly resizes animated images (#2181) (8c4f890)
  • properly set req.payload on forgotPassword in local API (#2194) (5ac436e)
  • redirects example (#2209) (5aa203d)
  • renders rte upload drawer #2178 (523d9d4)
  • skips field validation on submit if skipValidation is set to true (cf17760)
  • version comparison view errors on old select value (#2163) (a3cc3c3)

Features

1.6.15 (2023-02-21)

Bug Fixes

  • mongoose connection error with useFacet (5888fb9)

1.6.14 (2023-02-21)

Bug Fixes

  • #2091 admin translations for filter operators (#2143) (8a8c392)
  • #2096, allows custom ts paths with payload generate:types (686a616)
  • #2117 collection pagination defaultLimit (#2147) (2a4db38)
  • #2131, doesn't log in unverified user after resetting password (3eb85b1)
  • #2134, allows links to be populated without having relationship or upload enabled (32a0778)
  • #2148, adds queryHiddenFields property to find operation (15b6bb3)
  • checks locale is valid for monaco code editor (#2144) (40224ed)
  • generate proper json field type according to rfc (#2137) (7e88698)
  • removes custom header and gutter from rte link drawer #2120 (#2135) (6a7663b)
  • sizes property optional on upload (#2066) (79d047e)
  • useFacet config option to disable $facet aggregation (#2141) (b4a2074)

1.6.13 (2023-02-18)

Bug Fixes

  • #2125, ensures createdAt and updatedAt are returned in update operations (42ebf68)

1.6.12 (2023-02-17)

Bug Fixes

  • ensures only valid fields can be queried on (1930bc2)

Features

1.6.11 (2023-02-15)

Bug Fixes

Features

1.6.10 (2023-02-14)

Bug Fixes

  • #2077 useAPIKey UI missing with disableLocalStrategy (#2084) (586b25a)
  • Add missing Spanish translations and fix typos (c4742e5)
  • document type in update request handler (d5cd970)
  • ensures versions createdAt matches the original doc (8c7e37c)
  • globals not saving drafts unless published first (#2082) (4999fba)
  • Use the user's AdminUI locale for the DatePicker (#2046) (#2057) (b4a7e91)
  • validate type (7bb0984)

Features

1.6.9 (2023-02-10)

Bug Fixes

  • adds query constraint to ensureMaxVersions query (30688bb)
  • translation of "or" -> "ou" in french (#2047) (dddbec2)

Features

  • allows customization of the folder used to serve admin bundled files in production (4d259a6)

1.6.7 (2023-02-08)

Bug Fixes

  • drawer state was not set when opened (e6ac872)

1.6.6 (2023-02-07)

Bug Fixes

  • #1887, dataloader rich text population infinite loop (ac2e174)
  • enables locales with date field (aefb655)

1.6.5 (2023-02-07)

Bug Fixes

  • allows radio input to be tabbable (b5880f2)
  • auth type leaking into type gen (1f0a1c7)
  • corrects keyboard accessibility for checkbox field (65b8fd2)
  • ensures preview is enabled before rendering button (e968f40)
  • local API update typing (#2010) (4b0d4f4), closes #2009
  • max versions incorrectly sorting, causing incorrect versions to be held onto (2e4f7ab)
  • named tabs not displaying data in versions view (a41e295)
  • replaced media not rendering after document save (827428d)
  • webpack css-loader resolve urls (ade4c01)

Features

1.6.4 (2023-02-03)

Bug Fixes

  • only hoists localized values if localization is enabled (8c65f6a)

Features

1.6.3 (2023-02-01)

Bug Fixes

  • properly await graphql schema generation (888b3a2)

1.6.2 (2023-02-01)

Features

  • Adds optional password to generated types within auth-enabled collections

1.6.1 (2023-02-01)

🐛 Bug Fixes

Features

  • Roadmap - improved TypeScript experience - begins work to SIGNIFICANTLY improve typing of Payload's Local API, removing the need for generics and inferring types automatically from your generated types
  • Refactors the Local API to include only the bare minimum code necessary for running local API operations, which will allow us to deploy serverlessly
  • blocks drawer #1909 (339cee4)
  • requires ts-node to start a project for any config that uses ts or jsx (f1c342e)
  • simplifies versions logic (8cfa550)
  • add Chinese translation (#1926) (7c6ff89)
  • add Croatian translation (#1982) (dfa47a0

🚨 BREAKING CHANGES

Payload now no longer transpiles your config for you

This release removes the need to use @swc/register to automatically transpile Payload configs, which dramatically improves Payload initialization speeds and simplifies the core Payload logic significantly. More info in the PR here.

If you are not using TypeScript, this will be a breaking change. There are many ways to mitigate this - but the best way is to just quickly scaffold a barebones TS implementation. You can still write JavaScript, and this PR does not require you to write TS, but handling transpilation with TypeScript will be an easy way forward and can set you up to opt-in to TS over time as well.

For instructions regarding how to migrate to TS, review the PR here.

Payload init is now always async, and payload.initAsync has been removed

We are pulling off a bandaid here and enforcing that payload.init is now asynchronous across the board. This will help prevent issues in the future and allow us to do more advanced things within init down the road. But this will be a breaking change if your project uses payload.init right now.

To migrate, you need to convert your code everywhere that you run payload.init to be asynchronous instead. For example, here is an example of a traditional payload.init call which needs to be migrated:

const express = require('express')
const payload = require('payload')

const app = express()

payload.init({
  secret: 'SECRET_KEY',
  mongoURL: 'mongodb://localhost/payload',
  express: app,
})

app.listen(3000, async () => {
  console.log('Express is now listening for incoming connections on port 3000.')
})

Your payload.init call will need to be converted into the following:

const express = require('express')
const payload = require('payload')

const app = express()

const start = async () => {
  await payload.init({
    secret: 'SECRET_KEY',
    mongoURL: 'mongodb://localhost/payload',
    express: app,
  })

  app.listen(3000, async () => {
    console.log('Express is now listening for incoming connections on port 3000.')
  })
}

start()

Notice that all we've done is wrapped the payload.init and app.listen calls with a start function that is asynchronous.

All Local API methods are no longer typed as generics, and instead will infer types for you automatically

Before this release, the Local API methods were configured as generics. For example, here is an example of the findByID method prior to this release:

const post = await payload.findByID<Post>({
  collection: 'posts',
  id: 'id-of-post-here',
})

Now, you don't need to pass your types and Payload will automatically infer them for you, as well as significantly improve typing throughout the local API. Here's an example:

const post = await payload.findByID({
  collection: 'posts', // this is now auto-typed
  id: 'id-of-post-here',
})

// `post` will be automatically typed as `Post`

To migrate, just remove the generic implementation!

But there's one more thing to do before Payload can automatically type your Local API. You need to add a path to your tsconfig.json file that matches your exported types from Payload:

{
  "compilerOptions": {
    // your compilerOptions here
    "paths": {
      // Tell TS where to find your generated types
      // This is the default location below
      "payload/generated-types": ["./src/payload-types.ts"]
    }
  }
}

Then go regenerate your types. We've extended the payload generate:types method a bit to be more complete. Upon regenerating types, you'll see a new Config export at the top of the file which contains a key - value pair of all your collection and global types, which Payload will automatically import.

JSX support must be defined in tsconfig.json

If not already defined, add the following to your compilerOptions:

  "compilerOptions": {
    "jsx": "react"
  }

Versions may need to be migrated

This release includes a substantial simplification / optimization of how Versions work within Payload. They are now significantly more performant and easier to understand behind-the-scenes. We've removed ~600 lines of code and have ensured that Payload can be compatible with all flavors of MongoDB - including versions earlier than 4.0, Azure Cosmos MongoDB, AWS' DocumentDB and more.

But, some of your draft-enabled documents may need to be migrated.

If you are using versions and drafts on any collections, you can run a simple migration script to ensure that your drafts appear correctly in the Admin UI. Your data will never disappear from your database in any case if you update, but some drafts may not show in the List view anymore.

To migrate, create this file within the root of your Payload project:

migrateVersions.ts

const payload = require('payload')

require('dotenv').config()

const { PAYLOAD_SECRET, MONGODB_URI } = process.env

// This function ensures that there is at least one corresponding version for any document
// within each of your draft-enabled collections.

const ensureAtLeastOneVersion = async () => {
  // Initialize Payload
  // IMPORTANT: make sure your ENV variables are filled properly here
  // as the below variable names are just for reference.
  await payload.init({
    secret: PAYLOAD_SECRET,
    mongoURL: MONGODB_URI,
    local: true,
  })

  // For each collection
  await Promise.all(
    payload.config.collections.map(async ({ slug, versions }) => {
      // If drafts are enabled
      if (versions?.drafts) {
        const { docs } = await payload.find({
          collection: slug,
          limit: 0,
          depth: 0,
          locale: 'all',
        })

        const VersionsModel = payload.versions[slug]
        const existingCollectionDocIds: Array<string> = []
        await Promise.all(
          docs.map(async (doc) => {
            existingCollectionDocIds.push(doc.id)
            // Find at least one version for the doc
            const versionDocs = await VersionsModel.find(
              {
                parent: doc.id,
                updatedAt: { $gte: doc.updatedAt },
              },
              null,
              { limit: 1 },
            ).lean()

            // If there are no corresponding versions,
            // we need to create one
            if (versionDocs.length === 0) {
              try {
                await VersionsModel.create({
                  parent: doc.id,
                  version: doc,
                  autosave: Boolean(versions?.drafts?.autosave),
                  updatedAt: doc.updatedAt,
                  createdAt: doc.createdAt,
                })
              } catch (e) {
                console.error(
                  `Unable to create version corresponding with collection ${slug} document ID ${doc.id}`,
                  e?.errors || e,
                )
              }

              console.log(`Created version corresponding with ${slug} document ID ${doc.id}`)
            }
          }),
        )

        const versionsWithoutParentDocs = await VersionsModel.deleteMany({
          parent: { $nin: existingCollectionDocIds },
        })

        if (versionsWithoutParentDocs.deletedCount > 0) {
          console.log(
            `Removing ${versionsWithoutParentDocs.deletedCount} versions for ${slug} collection - parent documents no longer exist`,
          )
        }
      }
    }),
  )

  console.log('Done!')
  process.exit(0)
}

ensureAtLeastOneVersion()

Make sure your environment variables match the script's values above and then run PAYLOAD_CONFIG_PATH=src/payload.config.ts npx ts-node -T migrateVersions.ts in your terminal. Make sure that you point the command to your Payload config.

This migration script will ensure that there is at least one corresponding version for each of your draft-enabled documents. It will also delete any versions that no longer have parent documents.

👀 Example of a properly migrated project

For an example of how everything works with this update, go ahead and run npx create-payload-app. We've updated create-payload-app to reflect all the necessary changes here and you can use a new project to compare / contrast what you have in your current project with what Payload needs now in this release.

1.5.9 (2023-01-15)

Bug Fixes

  • #1877, #1867 - mimeTypes and imageSizes no longer cause error in admin ui (b06ca70)

1.5.8 (2023-01-12)

Features

  • throws descriptive error when collection or global slug not found (b847d85)

1.5.7 (2023-01-12)

Bug Fixes

  • ensures find with draft=true does not improperly exclude draft ids (69026c5)
  • ensures querying with drafts works on both published and non-published posts (f018fc0)

1.5.6 (2023-01-11)

Bug Fixes

  • ensures that find with draft=true returns ids with drafts (3f30b2f)

1.5.5 (2023-01-11)

Bug Fixes

  • #1808, arrays and blocks now save localized nested field data upon reordering rows (ee54c14)
  • bug when clearing relationship field without hasMany: true (#1829) (ed7cfff)
  • ensures upload file data is available for conditions (d40e136)
  • fix miss typo in Thai translation (25e5ab7)
  • formats date when useAsTitle (086117d)
  • prevents uploads drawer from crashing when no uploads are enabled (84e1417)
  • rte link element initial state #1848 (1cde647)
  • updatesmargin for group field within a row (1c3a257)
  • upload field filterOptions (9483ccb)
  • wrong translation and punctuation spacing (bf1242a)

Features

  • adds translations for fallbackToDefaultLocale (c247f31)
  • ensures compatibility with azure cosmos and aws documentdb (73af283)

1.5.4 (2023-01-06)

Features

  • allows init to accept a pre-built config (84e00bf)

1.5.3 (2023-01-05)

Bug Fixes

  • theme flicker on code editor (6567454)

1.5.2 (2023-01-04)

Bug Fixes

  • ignores admin and components from swc (7d27431)

1.5.1 (2023-01-04)

Bug Fixes

  • reverts components directory back to ts (1bbf099)

1.5.0 (2023-01-04)

Bug Fixes

Features

1.4.2 (2023-01-03)

Bug Fixes

  • #1775 - siblingData for unnamed fields within array rows improperly formatted (d6fcd19)
  • #1786, relationship with hasMany no longer sets empty array as default value (ecfb363)
  • error clearing date field (883daf7)
  • select field crash on missing value option (ec9196e)

Features

  • add Ukrainian translation (#1767) (49fa5cb)
  • preview now exposes most recent draft data (54dadbe)

1.4.1 (2022-12-24)

Bug Fixes

  • #1761, avoids rich text modifying form due to selection change (9f4ce8d)

1.4.0 (2022-12-23)

Bug Fixes

  • #1611, unable to query draft versions with draft=true (44b31a9)
  • #1656 remove size data (389ee26)
  • #1698 - globals and autosave not working (915f1e2)
  • #1738 save image dimensions to svg uploads (2de435f)
  • #1747, rich text in arrays improperly updating initialValue when moving rows (d417e50)
  • #1748, bails out of autosave if doc is published while autosaving (95e9300)
  • #1752, removes label from row field type (ff3ab18)
  • #551 - rich text nested list structure (542ea8e)
  • allows cleared file to be reselected (35abe81)
  • get relationships in locale of i18n language setting (#1648) (60bb265)
  • missing file after reselect in upload component (6bc1758)
  • prevents special characters breaking relationship field search (#1710) (9af4c1d)
  • refreshes document drawer on save (9567328)
  • removes update and created at fields when duplicating, ensures updatedAt data is reactive (bd4ed5b)
  • safely clears sort #1736 (341c163)
  • simplifies radio validation (0dfed3b)
  • translated tab classnames (238bada)
  • updates relationship label on drawer save and prevents stepnav update (59de4f7)
  • updates richtext toolbar position if inside a drawer (468b0d2)
  • use the slug for authentication header API Key (5b70ebd)

Features

BREAKING CHANGES

  • replaced the useAPIKey authentication header format to use the collection slug instead of the collection label. Previous: ${collection.labels.singular} API-Key ${apiKey}, updated: ${collection.slug} API-Key ${apiKey}

1.3.4 (2022-12-16)

Bug Fixes

  • async validate out of order (e913fbe)
  • autosave with nested localized fields (4202fc2)
  • doc access should not run where query on collections without id (016beb6)
  • run docAccess also when checking global (b8c0482)

1.3.3 (2022-12-16)

Bug Fixes

  • allow translation in group admin.description (#1680) (91e33ad)
  • ensures select field avoids circular dependencies (f715146)

1.3.2 (2022-12-15)

Bug Fixes

  • safely handles rich text deselection (420eef4)

1.3.1 (2022-12-15)

Bug Fixes

  • add i18n type to collection and globals admin.description (#1675) (049d560)
  • adds draftsEnabled to baseSchema for tabs / arrays / groups & allows for null enum (80da898)
  • adds draftsEnabled to versionSchema in collections / globals (f0db5e0)
  • collapsible margin bottom adjustment (#1673) (64086e8)
  • escapes react-select events when drawer is open (f290cda)
  • label translation in about to delete dialog (#1667) (d9c45f6)
  • list view date field display format (#1661) (934b443)
  • removes case for select field that sets data to undefined if set to null (b4f39d5)
  • Set 'Dashboard's link to config route (#1652) (940c1e8)
  • stringifies date in DateTime field for useAsTitle (#1674) (a1813ca)

Features

  • inline relationships (8d744c8)
  • custom button html element (5592fb1)
  • further Tooltip improvements (e101f92)

1.3.0 (2022-12-09)

Bug Fixes

  • #1547, global afterChange hook not falling back to original global if nothing returned (a72123d)

  • #1632 graphQL non-nullable relationship and upload fields (#1633) (eff3f18)

  • change edit key to prevent richtext editor from crashing (#1616) (471d214)

  • filterOptions function argument relationTo is an array (#1627) (11b1c0e)

  • resets slate state when initialValue changes, fixes #1600, #1546 (9558a22)

  • sanitizes global find query params (512bc1e)

  • Select with hasMany and localized (#1636) (756edb8)

  • translation key in revert published modal (#1628) (b6c597a)

  • unflattens fields in filterOptions callback (acff46b)

  • feat!: no longer sanitize collection slugs to kebab case (#1607) (ba2f2d6), closes #1607

Features

BREAKING CHANGES

  • collection slugs are no longer automatically sanitized to be kebab case. This will only be an issue if your current slugs were in camel case. The upgrade path will be to change those slugs to the kebab case version that the slug was automatically being sanitized to on the backend.

If you only use kebab case or single word slugs: no action needed.

If you have existing slugs with camel case and populated data: you'll need to convert these to the kebab case version to match the previously sanitized value.

ie. myOldSlug is your slug, you should convert it to my-old-slug.

Any future slugs after updating will be used as-is.

1.2.5 (2022-12-06)

Bug Fixes

  • exits findOptionsByValue when matchedOption is found (881c067)
  • mismatch language condition when rendering unpublish (3ddd0ea)
  • safely coerces limit and depth to number or undefined (dd04d78)
  • uses pathOrName to pass to internal Relationship field components (8874e87)

Features

1.2.4 (2022-12-03)

Bug Fixes

1.2.3 (2022-12-02)

Bug Fixes

1.2.2 (2022-12-02)

Bug Fixes

  • adds contain operators for text/email/radio fields (4c37af6)
  • adjusts how limit is set, both in options and paginates limit (a718010)
  • aligns mongoose PaginatedDocs type with actual lib type (dce2081)
  • allows for form controlled relationship fields to be populated (e4435bb)
  • allows for limit bypass on version find operations (891f00d)
  • blockName grows in all browsers (03c2ab5)
  • corrects skipValidation (e6f1c6f)
  • dynamic relationship filterOptions (99c1f41)
  • ensures enums cannot query on partial matches (ec51929)
  • german translation optimizations (#1485) (e9d2163)
  • handle multiple locales in relationship population (#1452) (04c689c)
  • i18n: requiresAtLeast variable in de.json (#1556) (47fd0d9)
  • ignore validation when unpublishing, do not allow restore with invalid form state (77ab542)
  • indexSortableFields timestamp fields #1506 (#1537) (7aada3c)
  • infinite rerenders, accounts for hasMany false (16d00e8)
  • moves relationship field useEffect into async reducer action (54ef40a)
  • moves sharp types from devDeps to deps (b3d526b)
  • reverts async reducer and resolves infinite effect (a9da81f)
  • sanitize number query params before passing to find operation (c8d1b9f)
  • translate select field option labels (#1476) (3a9dc9e)
  • update drafts includes latest version changes (48989d0)
  • updates code field css (3eebd66)
  • updates syntax colors for light theme (dbfe7ca)
  • uses baseClass in code field (d03f0ae)

Features

  • decouples limit from pagination, allows for no limit query (f7ce0c6)
  • improve typescript comments (#1467) (5bd8657)
  • log email transport error messages (#1469) (a90a1a9)
  • removes theme provider and updates background for code fields (1a6c9a3)

1.2.1 (2022-11-22)

Bug Fixes

  • adjusts styles to allow error bg to fill textarea (2e57b76)
  • allows patching global drafts #1415 (25822a9)
  • dynamically sets stepnav from default edit view (40c8778)
  • ensures drafts operations saves as draft #1415 (fc16ffe)
  • flattens locales before versioning published docs #1415 (f700f51)
  • i18n: version count (#1465) (075b7e9)
  • Increase textarea click area (c303913)
  • invalid query string user account request (#1478) (400cb9b)
  • removes incorrectly import/export option type - #1441 (ed01a17)
  • rendering of localized select value (1d1d249)
  • sanitizes select values on the server, allowing isClearable selects to be cleared without error (699ca14)
  • translate version comparison view field labels (#1470) (8123585)
  • versionCount was broken & other i18n improvements (#1450) (078c28b)
  • versions tests (af6a7aa)

Features

  • add i18n to option labels in version comparison (#1477) (7b6a9ed)
  • exports field types properly (7c6d6fd)

1.2.0 (2022-11-18)

🐛 Bug Fixes

  • build errors (65f0e1c)
  • components optional chaining (d5e725c)
  • corrects exported custom component type (2878b4b)
  • corrects type for CollapsibleLabel example type, adjusts custom component filenames (ccb4231)
  • sets pointer-events to none so the entire label bar is clickable (e458087)

Features

  • add i18n to admin panel (#1326) (bab34d8)
  • adds docs example (2bf0fff)
  • adds playwright tests for array fields (57a8c35)
  • converts rowHeader to collapsibleLabel, extends data passed to functions/components (13ec1e0)
  • customizable header-labels (d45de99)
  • simplifies collapsible label API, adds e2e tests (d9df98f)
  • specifies component names for arrays/collapsibles, simplifies threaded data (b74ea21)

🚨 BREAKING CHANGES

  • You might need to update your config. This change affects collections, globals and block fields with custom labeling.

    • Collections: are affected if you have a custom labels.singular defined that differs from your collection slug.

      // ExampleCollection.ts
      
      // Before
      const ExampleCollection: CollectionConfig = {
        slug: 'case-studies',
        labels: {
          // Before Payload used `labels.singular` to generate types/graphQL schema
          singular: 'Project',
          plural: 'Projects',
        },
      }
      
      // After
      const ExampleCollection: CollectionConfig = {
        // Now Payload uses `slug` to generate types/graphQL schema
        slug: 'case-studies',
        labels: {
          singular: 'Project',
          plural: 'Projects',
        },
        // To override the usage of slug in graphQL schema generation
        graphQL: {
          singularName: 'Project',
          pluralName: 'Projects',
        },
        // To override the usage of slug in type file generation
        typescript: {
          interface: 'Project',
        },
      }
      
    • Globals: are affected if you have a label defined that differs from your global slug.

      // ExampleGlobal.ts
      
      // Before
      const ExampleGlobal: GlobalConfig = {
        slug: 'footer',
        // Before Payload used `label` to generate types/graphQL schema
        label: 'Page Footer',
      }
      
      // After
      const ExampleGlobal: GlobalConfig = {
        // Now Payload uses `slug` to generate types/graphQL schema
        slug: 'footer',
        label: 'Page Footer',
        // To override the usage of slug in graphQL schema generation
        graphQL: {
          name: 'PageFooter',
        },
        // To override the usage of slug in type file generation
        typescript: {
          interface: 'PageFooter',
        },
      }
      
    • Block Fields: are affected if you have a label defined that differs from your block slug.

      // ExampleBlock.ts
      
          // Before
          const ExampleBlock: Block = {
            slug: 'content',
            // Before Payload used `label` to generate graphQL schema
            label: 'Content Block',
          }
      
          // After
          const ExampleBlock: Block = {
            // Now Payload uses `slug` to generate graphQL schema
            slug: 'content',
            label: 'Content Block',
            // To override the usage of slug in graphQL schema generation
            graphQL: {
              singularName: 'ContentBlock',
            },
          }
          ```
      
      **Breaking changes recap**:
      
  • On Collections

    • Use graphQL.singularName, graphQL.pluralName for GraphQL schema names.
    • Use typescript.interface for typescript generation name.
  • On Globals

    • Use graphQL.name for GraphQL Schema name.
    • Use typescript.interface for typescript generation name.
  • On Blocks (within Block fields)

    • Use graphQL.singularName for graphQL schema names.

1.1.26 (2022-11-15)

Bug Fixes

1.1.25 (2022-11-15)

Bug Fixes

  • add slug to DocumentInfo context (#1389) (4d8cc97)
  • adds unique key to upload cards to prevent old images being shown while navigating to new page (5e8a8b2)
  • ensures admin components is defaulted (d103f6c)
  • global afterRead and afterChange execution (#1405) (cdaa8cc)

Features

1.1.24 (2022-11-14)

Bug Fixes

  • cursor jumping while typing in inputs (216b9f8), closes #1393

1.1.23 (2022-11-12)

Bug Fixes

  • #1361, ensures collection auth depth works while retrieving static assets (2f68404)

Features

  • optimizes field performance by storing internal values in useField hook (66210b8)

1.1.22 (2022-11-12)

Bug Fixes

  • #1353, ensures errors returned from server make their way to UI (3f28a69)
  • #1357, nested arrays and blocks sometimes not allowing save (86855d6)
  • #1358, allows listSearchableFields to work when indicated fields are nested (eb0023e)
  • #1360, relationship field onMenuScrollToBottom not working in some browsers (7136db4)
  • #1367, allows custom global components within schema validation (1d76e97)
  • 1309, duplicative logout in admin UI (35f91b0)
  • fixed GraphQL Access query resolver to return the correct data (#1339) (cfef68f)

1.1.21 (2022-11-05)

1.1.20 (2022-11-05)

Features

  • optimizes blocks and arrays by removing some additional rerenders (483adf0)

1.1.19 (2022-10-31)

Bug Fixes

1.1.18 (2022-10-25)

1.1.17 (2022-10-25)

Bug Fixes

  • #1286, uses defaultDepth in graphql rich text depth (66bf8c3)
  • #1290, renders more than one rich text leaf where applicable (a9f2f0e)
  • #1291, add inline relationship drafts (3967c12)
  • enforces depth: 0 in graphql resolvers (3301f59)
  • ensures field updates when disableFormData changes (c929725)
  • group + group styles within collapsible (17dbbc7)

Features

1.1.16 (2022-10-21)

Bug Fixes

  • indexSortableFields not respected (785b992)
  • obscure bug where upload collection has upload field relating to itself (36ef378)

1.1.15 (2022-10-14)

Bug Fixes

  • ensures svg mime type is always image/svg+xml (0b0d971)

1.1.14 (2022-10-14)

1.1.11 (2022-10-12)

Bug Fixes

  • ensures arrays and blocks mount as disableFormData: true, fixes #1242 (5ca5aba)

Features

1.1.10 (2022-10-11)

1.1.9 (2022-10-11)

Features

  • improves access control typing (5322ada)

1.1.8 (2022-10-11)

Features

  • adds ability to create related docs while editing another (1e048fe)
  • implements use-context-selector for form field access (5c1a3fa)

1.1.7 (2022-10-06)

1.1.6 (2022-10-06)

Bug Fixes

Features

  • async admin access control (1cfce87)
  • sort select and relationship fields by default (813c46c)

1.1.5 (2022-09-29)

Bug Fixes

  • bug in useThrottledEffect (3ce8ee4)

1.1.4 (2022-09-24)

Bug Fixes

  • field level access for nested fields (22ea98c)
  • refine type generation for relationships (ef83bdb)

Features

  • supports root endpoints (52cd3b4)

1.1.3 (2022-09-16)

Bug Fixes

  • adjust prevPage and nextPage graphql typing (#1140) (b3bb421)
  • duplicate with relationships (eabb981)

1.1.2 (2022-09-14)

Bug Fixes

  • resize images without local storage (1496679)
  • resize images without local storage (7b756f3)

1.1.1 (2022-09-13)

Bug Fixes

  • conditions on collapsible fields (9c4f2b6)
  • dashboard links to globals (dcc8dad)

1.1.0 (2022-09-13)

Bug Fixes

Features

  • #1001 - builds a way to allow list view to search multiple fields (a108372)
  • collection groups (dffeaf6)
  • globals groups (59af872)
  • hide nav labels with no un-grouped collections (c40e232)
  • implement gravatar (#1107) (ca434b8)
  • support localized tab fields (a83921a)
  • tabs support localization at the tab level (6a6a691)
  • WIP tab compatible with traverseFields (2ae33b6)

1.0.36 (2022-09-10)

Bug Fixes

1.0.35 (2022-09-10)

Bug Fixes

Features

  • allows rich text links to link to other docs (a99d9c9)
  • improves rich text link ux (91000d7)

1.0.34 (2022-09-07)

Bug Fixes

1.0.33 (2022-09-07)

Bug Fixes

Features

1.0.30 (2022-08-30)

Bug Fixes

1.0.29 (2022-08-29)

Bug Fixes

1.0.28 (2022-08-29)

Bug Fixes

  • incorrect field paths when nesting unnamed fields (#1011) (50b0303), closes #976
  • relationship cell loading (#1021) (6a3cfce)
  • remove lazy loading of array and blocks (4900fa7)
  • require properties in blocks and arrays fields (#1020) (6bc6e7b)
  • unpublish item will not crash the UI anymore (#1016) (0586d7a)

Features

  • export more fields config types and validation type (#989) (25f5d68)
  • types custom components to allow any props (#1013) (3736755)
  • validate relationship and upload ids (#1004) (d727fc8)

1.0.27 (2022-08-18)

Bug Fixes

  • react-sortable-hoc dependency instead of dev dependency (4ef6801)

1.0.26 (2022-08-18)

Bug Fixes

  • missing fields in rows on custom id collections (#954) (39586d3)

Features

  • adds more prismjs syntax highlighting options for code blocks (#961) (f45d5a0)
  • enable reordering of hasMany relationship and select fields (#952) (38a1a38)

1.0.25 (2022-08-17)

Bug Fixes

Features

  • add new pickerAppearance option 'monthOnly' (566c6ba)
  • custom api endpoints (11d8fc7)

1.0.24 (2022-08-16)

Bug Fixes

Features

  • ensures you can query on blocks via specifying locale or not specifying locale (078e8dc)

1.0.23 (2022-08-15)

Bug Fixes

1.0.22 (2022-08-12)

Bug Fixes

1.0.21 (2022-08-11)

Bug Fixes

  • ensures you can query on nested block fields (ca852e8)
  • saving multiple versions (#918) (d0da3d7)

1.0.20 (2022-08-11)

Bug Fixes

  • E11000 duplicate key error has no keyValue (#916) (50972b9)
  • number validation works with 0 min and max (#906) (874c001)

Features

1.0.19 (2022-08-07)

Features

  • exposes static upload handlers (a8d2e09)

1.0.18 (2022-08-06)

1.0.17 (2022-08-06)

Bug Fixes

1.0.16 (2022-08-05)

Bug Fixes

1.0.15 (2022-08-04)

1.0.14 (2022-08-04)

Bug Fixes

Features

  • allows querying on rich text content (3343adb)

1.0.13 (2022-08-03)

Bug Fixes

Features

  • improves adjacent group styling (0294c02)

1.0.12 (2022-08-02)

Bug Fixes

  • ensures tabs can overflow on mobile when there are many (663cae4)
  • unique index creation (#867) (c175476)

1.0.11 (2022-07-28)

Bug Fixes

  • ensures when initial values changes, field value is updated (858b1af)

1.0.10 (2022-07-27)

Bug Fixes

  • #806, allow partial word matches using 'like' operator (c96985b)
  • #836 (84611af)
  • accesses payload config correctly in gql refresh resolver (d5e88cc)
  • email not always loading while viewing auth collections (36e9acc)
  • ensures collapsible preferences are retained through doc save (61f0e8e)
  • id now properly required in graphql findByID operation (5dc7caf)
  • set overflow payload modal container to auto (cfb5540)
  • trim trailing whitespaces of email in login (8feed39)

Features

  • greatly enhances performance by using dataloader pattern to batch populations (c5bcd1e)
  • significantly improves complex GraphQL query performance (5d57bfa)

1.0.9 (2022-07-21)

Bug Fixes

  • avoid assuming Email will be present on JWT token. Using ID instead as email might not be in if using disableLocalStrategy (#789) (3b4d5af)
  • enable index creation from schema (#791) (2a1f387)
  • graphql gen logging output (#795) (8a81d0b)
  • sharpens radio input edges by replacing box-shadow trick with border property (#768) (e2c366f)

Features

  • pass payload and names to custom auth strategies (#781) (3a3026c)
  • use provided auth strategy name or strategy.name (#797) (f22f56e)

1.0.8 (2022-07-20)

Bug Fixes

Features

  • export PayloadRequest (66c820c)
  • improves generated types by removing unnecessary optional properties (#784) (6f748f1)

1.0.7 (2022-07-19)

1.0.6 (2022-07-19)

Features

  • improves initAsync pattern (428edb0)

1.0.5 (2022-07-19)

Features

1.0.4 (2022-07-19)

Features

  • Updated UI: Dark Mode
  • Updated UI: Collapsibles (60bfb1c)
  • Updated UI: Tabs field (68e7c41)
  • Updated UI: Styling Revamp and responsive improvements
  • More maintainable colors via CSS vars
  • Improved test coverage through granular Payload configs
  • Introduction of E2E tests through Playwright
  • allow clear select value (#735) (3132d35)

BREAKING CHANGES

We have removed our reliance on SCSS variables like color and font, replacing them instead with CSS variables wherever possible.

Due to this change, the admin.scss functionality has become obsolete, and overriding SCSS variables is not longer needed or supported. If you want to customize CSS, you can still do so, but via the admin.css property instead.

0.19.2 (2022-07-11)

Bug Fixes

  • ensures only plain objects are merged within incoming configs (2c66ad8)

Features

0.19.1 (2022-07-09)

Bug Fixes

  • ensures duplicative relationship options are not present (#732) (ce1c99b)

0.19.0 (2022-07-08)

BREAKING CHANGES

  • relationship fields with access control preventing read of relation will return id instead of null (#644)

Bug Fixes

  • allow passing of autoIndex mongoose connectionOptions (#722) (567d8c1)
  • copyfiles cross platform (#712) (67331eb)
  • ensures auth/me relations in gql can be queried (01bc1fe)
  • ensures old data from arrays is not persisted (d9ef803)
  • relationship field disabled from access control in related collections (#644) (91e33d1)

Features

0.18.5 (2022-06-29)

Bug Fixes

  • empty cell data renders in list (#699) (b6b0ffb)
  • icon appears above select field's option list (#685) (c78d774)

0.18.4 (2022-06-24)

0.18.3 (2022-06-24)

Bug Fixes

0.18.2 (2022-06-24)

Features

0.18.1 (2022-06-21)

Bug Fixes

0.18.0 (2022-06-14)

Bug Fixes

  • custom fields values resetting in ui (#626) (f2bf239)
  • me auth route breaks with query params (#648) (a1fe17d)

Features

  • adds timestamps to generated collection types if enabled (#604) (af6479b)
  • enable webpack filesystem cache in dev (#621) (44c1232)

0.17.3 (2022-06-08)

Bug Fixes

  • duplicate objects in array fields in validate data and siblingData (#599) (20bbda9)
  • ensures unflattening locales only happens if config specifies locales (c18cc23)

0.17.2 (2022-05-24)

Bug Fixes

  • #576, graphql where on hasMany relationship not working (#582) (20d251f)
  • adds optional chaining to safely read drafts setting on versions (#577) (982b3f0)
  • passes required prop for select field (#579) (734e905)

0.17.1 (2022-05-17)

Bug Fixes

  • only localizes schema if both field and top-level config are enabled (e1a5547)

0.17.0 (2022-05-16)

Bug Fixes

  • apply field condition to custom components (#560) (1dfe2b8)
  • prevent changing order of readOnly arrays (#563) (16b7edb)

0.16.4 (2022-05-06)

Bug Fixes

  • fields in groups causing console error in browser (#553) (78edac6)
  • save resized image file when equal to upload size (#555) (46f4bc2)

0.16.3 (2022-05-04)

Bug Fixes

  • rare bug while merging locale data (47c37e0)

0.16.2 (2022-05-02)

Bug Fixes

  • checkbox defaultValues and more typing of sanitize (#550) (1e4a68f)

Features

  • exposes findMany argument to afterRead hooks to discern between find and findByID (b3832e2)
  • optimizes field operations (18489fa)

0.16.1 (2022-04-29)

Features

  • exposes payload within server-side validation args (e46b942)

0.16.0 (2022-04-29)

Bug Fixes

  • file upload safely handles missing mimeTypes (#540) (bf48fdf)

Features

  • allow subfield readOnly to override parent readOnly (#546) (834f4c2)
  • allows defaultValue to accept async function to calculate defaultValue (#547) (e297eb9)

0.15.13 (2022-04-26)

0.15.12 (2022-04-26)

Bug Fixes

  • ensures adding array / block rows modifies form state (8bdbd0d)

0.15.11 (2022-04-24)

Bug Fixes

  • improperly typed access control (b99ec06)

0.15.10 (2022-04-24)

Bug Fixes

0.15.9 (2022-04-20)

Bug Fixes

  • intermittent blocks UI issue (3c1dfb8)

0.15.8 (2022-04-20)

Bug Fixes

0.15.7 (2022-04-12)

Bug Fixes

  • checkbox validation error positioning (9af89b6)

Features

  • sanitize defaultValue to false when field is required (6f84c0a)

0.15.6 (2022-04-06)

Bug Fixes

  • new up separate logger for generateTypes script (cf54b33)

0.15.5 (2022-04-06)

Bug Fixes

  • relationship component showing no results (#508) (e1c6d9d)

0.15.4 (2022-04-05)

Bug Fixes

  • #495, avoids appending version to id queries (ab432a4)
  • default point validation allows not required and some edge cases (29405bb)

Features

  • allows like to search by many words, adds contain to match exact strings (ec91757)
  • extended validation function arguments (#494) (1b4b570), closes #495
  • filter relationship options using filterOptions (485991b)
  • logging: allow pino logger options to be passed into init (6620a4f)
  • support className config for row, block and array fields (#504) (0461c21)

0.15.3 (2022-04-04)

Bug Fixes

0.15.2 (2022-04-04)

Bug Fixes

  • #495, avoids appending version to id queries (a703e05)

0.15.1 (2022-03-28)

Features

  • builds a way to inject custom React providers into admin UI (5a7e8a9)
  • export Plugin type from config types (#491) (45f7011)

0.15.0 (2022-03-16)

BREAKING CHANGES

The GraphQL error response data object has moved from the top level to the extensions object.

Here is a previous example:

{
 "message": "The following fields are invalid: location,",
 "data": [
  {
   "message": "This field requires two numbers",
   "field": "location"
  },
 ]
},

The new shape of GraphQL errors is as follows:

"extensions": {
 "name": "ValidationError",
 "data": [
  {
   "message": "This field requires two numbers",
   "field": "location"
  },
 ]
}

Bug Fixes

  • #422, prevents loading duplicative relationship options (414679d)
  • #423, #391 - prevents loading edit views until data initializes (2884654)
  • #424, unable to clear localized property vals (1a05fe4)
  • #431 - relationship field not properly fetching option results (6fab8bf)
  • #454, withCondition type usability (56c16d5)
  • #459 - in Relationship field to multiple collections, when the value is null, options are not populated (#460) (a9b83c8)
  • #461 (08924a1)
  • #464, graphql upload access control (fd0629e)
  • adds key to RichText based on initialValue (f710b8c)
  • adjusts lte and gte types to match docs and codebase (#480) (8fc4f7f)
  • allow jwt to work without csrf in config (4048734)
  • awaits beforeDelete hooks (609b871)
  • config empty and sparse csrf is now allowed (7e7b058)
  • ensures empty hasMany relationships save as empty arrays (08b3e8f)
  • ensures nested lists always render properly (20e5dfb)
  • ensures overrideAccess is false if undefined while populating (97f3178)
  • ensures rte upload is populated when only upload is enabled (39438b8)
  • import path for createRichTextRelationshipPromise (586cd4d)
  • improperly typed local create method (48aa27c)
  • mobile styling to not found page (d3f88a1)
  • new slate version types (c5de01b)
  • optimizes relationship input search querying (7e69fcb)
  • prevents None from appearing in hasMany relationship select options (cbf43fa)
  • rare crash with link rte element (f5535f6)
  • rte upload field population (8327b5a)
  • type error in useField (ef4e6d3)

Features

  • 🎉 versions, drafts, & autosave!
  • #458, provides field hooks with sibling data (8e23a24)
  • add before and after login components (#427) (5591eea)
  • add logMockCredentials email option (ff33453)
  • add pagination argument to optimize graphql relationships and use in local api (#482) (647db51)
  • adds a way to customize express.static options (dbb3c50)
  • adds admin.upload.collections[collection-name].fields to the RTE to save specific data on upload elements (3adf44a)
  • adds indentation controls to rich text (7df50f9)
  • adds originalDoc to field access control (c979513)
  • adds path to GraphQL errors (#457) (ad98b29)
  • adds recursion to richText field to populate relationship and upload nested fields (42af22c)
  • allow empty string radio and select option values (#479) (f14e187)
  • allows access control to prevent reading of drafts (c38470c)
  • allows global access control to return query constraints (c0150ae)
  • allows select input to receive new options (#435) (500fb1c)
  • builds a way for multipart/form-data reqs to retain non-string values (4efc2cf)
  • enhances rich text upload with custom field API (0e4eb90)
  • ensures field hooks run on all locales when locale=all (c3f743a)
  • exposes data arg within create and update access control (73f418b)
  • exposes FieldWithPath type for reuse (df3a836)
  • exposes useLocale for reuse (bef0206)
  • improves adding rich text voids to RTE (966c3c6)
  • improves relationship field performance (13318ff)
  • improves rich text link (2e9a4c7)
  • indexes filenames (07c8ac0) a79570c))
  • rich text indentation (2deed8b)
  • serverURL is no longer required (#437) (dca90c4)
  • updates dependencies (3ca3f53)

0.14.31-beta.0 (2022-03-10)

Bug Fixes

  • improves rich text link (2e9a4c7)
  • improves adding rich text voids to RTE (966c3c6)
  • rare crash with link rte element (f5535f6)
  • ensures empty hasMany relationships save as empty arrays (08b3e8f)
  • #422, prevents loading duplicative relationship options (414679d)
  • #423, #391 - prevents loading edit views until data initializes (2884654)
  • #424, unable to clear localized property vals (1a05fe4)
  • #431 - relationship field not properly fetching option results (6fab8bf)
  • adds key to RichText based on initialValue (f710b8c)
  • awaits beforeDelete hooks (609b871)
  • ensures multipart/form-data using _payload flattens field data before sending (ae44727)
  • ensures nested lists always render properly (20e5dfb)
  • ensures rte upload is populated when only upload is enabled (39438b8)
  • import path for createRichTextRelationshipPromise (586cd4d)
  • improperly typed local create method (48aa27c)
  • mobile styling to not found page (d3f88a1)
  • new slate version types (c5de01b)
  • rte upload field population (8327b5a)
  • type error in useField (ef4e6d3)
  • #464, graphql upload access control (fd0629e)
  • ensures overrideAccess is false if undefined while populating (97f3178)

Features

  • 🎉 versions, drafts, & autosave!
  • adds originalDoc to field access control (c979513)
  • #458, provides field hooks with sibling data (8e23a24)
  • add before and after login components (#427) (5591eea)
  • add logMockCredentials email option (ff33453)
  • adds a way to customize express.static options (dbb3c50)
  • adds admin.upload.collections[collection-name].fields to the RTE to save specific data on upload elements (3adf44a)
  • adds indentation controls to rich text (7df50f9)
  • adds recursion to richText field to populate relationship and upload nested fields (42af22c)
  • allows access control to prevent reading of drafts (c38470c)
  • allows global access control to return query constraints (c0150ae)
  • allows select input to receive new options (#435) (500fb1c)
  • builds a way for multipart/form-data reqs to retain non-string values (4efc2cf)
  • enhances rich text upload with custom field API (0e4eb90)
  • ensures field hooks run on all locales when locale=all (c3f743a)
  • exposes FieldWithPath type for reuse (df3a836)
  • exposes useLocale for reuse (bef0206)
  • improves relationship field performance (13318ff)
  • indexes filenames (07c8ac0)
  • serverURL is no longer required (#437) (dca90c4)
  • updates dependencies (3ca3f53)
  • uses DocumentInfo to fetch and maintain doc versions (8f30c3b)
  • exposes data arg within create and update access control (73f418b)

0.14.0 (2022-01-03)

Bug Fixes

  • #370, only performs password functions when auth enabled (9738873)
  • #390, safari rich text link bug (a16b99b)
  • #393, ensures preview button gets up to date data (2f47e39)
  • #408 (5c3cfa4)
  • #408 (e2c5d93)
  • 407 (a09570c)
  • allows null in ImageSize width and height types (ba79fd4)
  • cross-browser upload drag and drop (4119eec)
  • ensures getDataByPath works (140a3aa)
  • ensures local findByID retains user (05288ee)
  • ensures row count is set properly in block fields (9e091af)
  • ensures searching relationships works with many pages of results (961787d)
  • globals model typing (da7c0c9)

Features

  • builds custom routes API, Before/After Dashboard and Nav custom components (e337c62)
  • exports custom text and select inputs (52edb5b)
  • exposes default Dashboard and Nav components for re-import (ffe8e17)

0.13.21-beta.0 (2021-12-29)

Bug Fixes

  • #370, only performs password functions when auth enabled (9738873)
  • #390, safari rich text link bug (a16b99b)
  • #393, ensures preview button gets up to date data (2f47e39)
  • #408 (5c3cfa4)
  • #408 (e2c5d93)
  • 407 (a09570c)
  • allows null in ImageSize width and height types (ba79fd4)
  • cross-browser upload drag and drop (4119eec)
  • ensures getDataByPath works (140a3aa)
  • ensures local findByID retains user (05288ee)
  • ensures row count is set properly in block fields (9e091af)
  • ensures searching relationships works with many pages of results (961787d)
  • globals model typing (da7c0c9)

Features

  • builds custom routes API, Before/After Dashboard and Nav custom components (e337c62)
  • exports custom text and select inputs (52edb5b)
  • exposes default Dashboard and Nav components for re-import (ffe8e17)

0.13.6 (2021-11-30)

Bug Fixes

  • requires path in select, text, textarea, and upload components (925a33e)

0.13.5 (2021-11-30)

Bug Fixes

  • select component rendered value (ecabf13)

0.13.4 (2021-11-30)

Bug Fixes

  • passes hasMany through select component (c77bf3a)
  • prevents uncontrolled text field component (f0fd859)
  • select component types (7e2b259)
  • threads props through textarea component (0b13eda)

Features

  • abstracts input from text component (615e369)
  • abstracts select component (fa67137)
  • abstracts textarea component and improves event typing (86480b7)
  • abstracts upload component (f234f68)

0.13.3 (2021-11-29)

Bug Fixes

  • upgrade sharp for prebuilt M1 binaries (34f416a)

0.13.2 (2021-11-29)

Bug Fixes

0.13.1 (2021-11-29)

Bug Fixes

  • ensures sorting by _id instead of improper id (ded891e)

Features

  • only adds list search query param if value is present (d6d76d4)

0.13.0 (2021-11-26)

Bug Fixes

  • #351 (94c2b8d)
  • #358 - reuploading with existing filenames (a0fb48c)
  • allows sync or async preview urls (da6e1df)
  • bug with relationship cell when no doc is available (40b33d9) 3839ef75151f))
  • ensures richtext links retain proper formatting (abf61d0)
  • ensures that querying by relationship subpaths works (37b21b0)
  • ensures uploads can be fetched with CORS (96421b3)
  • typing for collection description (bb18e82)
  • updates field description type to include react nodes (291c193)

Features

  • 🎉 🎉 builds a way to automatically generate types for collections and globals!.
  • 🎉 dramatically improves Payload types like local API methods and hooks to function as generics
  • adds relationship filter field (463c4e6)
  • applies upload access control to all auto-generated image sizes (051b7d4)
  • azure cosmos compatibility (6fd5ac2)
  • ensures update hooks have access to full original docs even in spite of access control (b2c5b7e)
  • improves querying logic (4c85747)
  • indexes filenames (5d43262)
  • renames useFieldType to useField (0245747)
  • supports custom onChange handling in text, select, and upload fields (4affdc3)

0.12.3 (2021-10-23)

Bug Fixes

  • #348, relationship options appearing twice in admin ui (b4c15ed)
  • ensures tooltips in email fields are positioned properly (a0b38f6)

0.12.2 (2021-10-21)

Bug Fixes

  • improves paste html formatting (d443ea5)

0.12.1 (2021-10-21)

Bug Fixes

  • rich text copy and paste now saves formatting properly (9d7feb9)

0.12.0 (2021-10-21)

Bug Fixes

  • bug where field hooks and access control couuld potentially compete (c35009f)

Features

  • builds UI field (edb723a)
  • exposes withCondition for re-use (c02e8f1)

0.11.2-beta.0 (2021-10-21)

Features

  • exposes withCondition for re-use (c02e8f1)

0.11.1-beta.0 (2021-10-20)

Features

0.11.0 (2021-10-20)

Bug Fixes

  • #338, array / block fields with only nested array block fields break admin UI (86e88d9)
  • #341 - searching on multiple relationship collections (3b99ded)
  • #343 - upload rte element crashes admin when no upload collection present (914cca6)
  • make name required on field types (#337) (b257e01)
  • more strict field typing (84f6a9d)
  • per page now properly modifies search query (fcd9c28)
  • properly types row field (7d49302)
  • removes node 15 from CI (a2df67e)
  • use proper error code on webpack build failure (2eb8154)

Features

  • adds dynamic url field to upload-enabled collections (cc4d1fd)
  • adds safety checks while querying on id with bad values (900f05e)
  • admin: initial per page component (3715e01)
  • allows richText enter key break out functionality to be extended in custom elements (ca91f47)
  • improves richtext link (423ca01)
  • per-page: add pagination to admin config (c132f2f)
  • per-page: set and load from preferences (d88ce2d)
  • saves active list filters in URL, implements per-page control (a6fc1fd)

0.10.11 (2021-10-08)

Bug Fixes

  • bug with local API and not passing array / block data (fd4fbe8)

0.10.10 (2021-10-07)

Bug Fixes

  • deepObjectCopy returns Date object instead of empty object (2711729)

0.10.9 (2021-10-05)

Bug Fixes

  • ensures field read access within login operation has id (e3229c5)

0.10.8 (2021-10-04)

Bug Fixes

  • ensures update field access control receives id (ffab6c4)

0.10.7 (2021-10-04)

Bug Fixes

  • ensures non populated relationships still retain IDs (a201109)
  • ensures relationship field access control receives id (470d434)

Features

  • add indexSortableField option to create indexes for sortable fields on all collections (ad09782)

0.10.6 (2021-09-30)

Bug Fixes

  • allow debug in payload config (65bf13d)
  • relationship + new slate incompatibility (f422053)

0.10.5 (2021-09-28)

Bug Fixes

  • ensures that fields within non-required groups are correctly not required (1597055)
  • index creation on localized field parent (23e8197)
  • pagination estimatedCount limited to near query (73bd698)

Features

  • adds rich text editor upload element (aa76950)
  • updates slate, finishes rte upload (08db431)

0.10.4 (2021-09-22)

Bug Fixes

  • allows image resizing if either width or height is larger (8661115)
  • array objects now properly save IDs (2b8f925)
  • date field error message position (03c0435)
  • properly types optional req in local findByID (02e7fe3)

Features

  • defaults empty group fields to empty object (8a890fd)
  • allows local update api to replace existing files with newly uploaded ones (dbbff4c)
  • exposes Pill component for re-use (7e8df10)
  • performance improvement while saving large docs (901ad49)

0.10.0 (2021-09-09)

Bug Fixes

  • admin UI collection id is required (dc96b90)
  • allow save of collection with an undefined point (f80646c)
  • config validation correctly prevents empty strings for option values (41e7feb)
  • ensures hooks run before access (96629f1)
  • ensures proper order while transforming incoming and outgoing data (c187da0)
  • improve id type semantic and restrict possible types to text and number (29529b2)
  • remove media directory to improve test run consistency (d42d8f7)
  • sanitize custom id number types (c7558d8)
  • sort id columns (114dc1b)

Features

  • add config validation for collections with custom id (fe1dc0b)
  • add config validation for collections with custom id (d0aaf4a)
  • add point field type (7504155)
  • allows user to pass req through local findByID (8675481)
  • frontend polish to point field (64ad6a3)
  • graphql support for custom id types (bc2a6e1)
  • point field localization and graphql (30f1750)
  • replace the collection idType option with an explicit id field (4b70a12)
  • support custom ids (3cc921a)

0.9.5 (2021-08-23)

Bug Fixes

  • obscure conditional logic bug (b0dc125)
  • windows compatible absolute paths for staticDir (b21316b)

0.9.4 (2021-08-06)

0.9.3 (2021-08-06)

Bug Fixes

  • args no longer optional in collection and global hooks (a5ea0ff)

0.9.2 (2021-08-06)

Bug Fixes

Features

  • allow completely disabling local file storage (9661c6d)
  • allows upload resizing to maintain aspect ratio (dea54a4)
  • exposes auto-sized uploads on payload req (9c8935f)
  • reduces group heading from h2 to h3 (907f8fd)

0.9.1 (2021-08-03)

Bug Fixes

  • groups with failing conditions being incorrectly required on backend (4cc0ea1)
  • relationship field access control in admin UI (65db8d9)

Features

  • exposes collection after read hook type (01a191a)

0.9.0 (2021-08-02)

BREAKING CHANGES

  • Due to greater plugin possibilities and performance enhancements, plugins themselves no longer accept a completely sanitized config. Instead, they accept a validated config as-provided, but sanitization is now only performed after all plugins have been initialized. By config santitization, we refer to merging in default values and ensuring that the config has its full, required shape. What this now means for plugins is that within plugin code, deeply nested properties like config.graphQL.mutations will need to be accessed safely (optional chaining is great for this), because a user's config may not have defined config.graphQL. So, the only real breaking change here is are that plugins now need to safely access properties from an incoming config.

Features

  • removes sanitization of configs before plugins are instantiated (8af3947)

0.8.2 (2021-08-02)

Bug Fixes

  • more advanced conditional logic edge cases (33983de)

Features

0.8.1 (2021-07-29)

BREAKING CHANGES

  • If you have any plugins that are written in TypeScript, we have changed plugin types to make them more flexible. Whereas before you needed to take in a fully sanitized config, and return a fully sanitized config, we now have simplified that requirement so that you can write configs in your own plugins just as an end user of Payload can write their own configs.

Now, configs will be sanitized before plugins are executed as well as after plugins are executed.

So, where your plugin may have been typed like this before:

import { SanitizedConfig } from 'payload/config'

const plugin = (config: SanitizedConfig): SanitizedConfig => {
  return {
    ...config,
  }
}

It can now be written like this:

import { Config } from 'payload/config'

const plugin = (config: Config): Config => {
  return {
    ...config,
  }
}

Features

  • improves plugin writability (a002b71)

0.8.0 (2021-07-28)

BREAKING CHANGES

  • There have been a few very minor, yet breaking TypeScript changes in this release. If you are accessing Payload config types from directly within the dist folder, like any of the following:

  • import { PayloadCollectionConfig, CollectionConfig } from 'payload/dist/collections/config/types';

  • import { PayloadGlobalConfig, GlobalConfig } from 'payload/dist/globals/config/types';

  • import { Config, PayloadConfig } from 'payload/config';

You may need to modify your code to work with this release. The TL;DR of the change is that we have improved our naming conventions of internally used types, which will become more important over time. Now, we have landed on a naming convention as follows:

  • Incoming configs, typed correctly for optional / required config properties, are named Config, CollectionConfig, and GlobalConfig.
  • Fully defaulted, sanitized, and validated configs are now named SanitizedConfig, SanitizedCollectionConfig, and SanitizedGlobalConfig.

They can be imported safely outside of the dist folder now as well. For more information on how to properly import which types you need, see the following Docs pages which have now been updated with examples on how to properly access the new types:

Bug Fixes

  • ensures text component is always controlled (c649362)

Features

  • revises naming conventions of config types (5a7e5b9)

0.7.10 (2021-07-27)

Bug Fixes

Features

  • improves conditional logic performance and edge cases (d43390f)

0.7.9 (2021-07-27)

Bug Fixes

  • missing richtext gutter (4d1249d)

Features

  • add admin description to collections and globals (4544711)
  • add collection slug to schema validation errors (ebfb72c)
  • add component support to collection and global description (fe0098c)
  • add component support to field description (e0933f6)
  • add customizable admin field descriptions (dac60a0)
  • add descriptions to every allowed field type, globals and collections (29a1108)
  • add global slug and field names to schema validation errors (bb63b4a)
  • improves group styling when there is no label (ea358a6)

0.7.8 (2021-07-23)

Features

  • fixes group label schema validation (cbac888)

0.7.7 (2021-07-23)

Bug Fixes

  • accurately documents the props for the datepicker field (dcd8052)

Features

  • only attempts to find config when payload is initialized (266ccb3)

0.7.6 (2021-07-07)

0.7.5 (2021-07-07)

Bug Fixes

  • crash on bullet list de-selection (5388513)
  • updates demo richtext elements with proper SCSS (0075912)

Features

  • adds plugins infrastructure (6b25531)
  • enables backspace to deactivate richtext list elements (91141ad)

0.7.4 (2021-07-01)

Bug Fixes

  • adds proper scss stylesheets to payload/scss (84e31ae)

0.7.3 (2021-07-01)

Bug Fixes

  • changes scss imports to allow vars imports to payload projects (ea80fd6)

Features

  • export all field prop types for custom components (5bea9ae)

0.7.2 (2021-06-22)

Bug Fixes

  • parses incoming numbers through query string for use in where clauses (4933b34)
  • respect maxDepth 0 (95c1650)
  • safely stringifies ObjectIDs while populating relationships (d6bc6f9)

Features

  • adds maxDepth to relationships and upload fields (880dabd)

0.7.1 (2021-06-21)

Bug Fixes

  • babel config file error (3af2554)

0.7.0 (2021-06-21)

Bug Fixes

  • handle all scenarios in select cell (dd40ab0)

Features

0.6.10 (2021-05-23)

0.6.9 (2021-05-16)

Bug Fixes

  • misc responsive improvements
  • date clipping in sidebar (#165)
  • misc polish to popup component
  • admin _verified field not displaying proper field value
  • properly typed express-fileupload config options (#180)

0.6.8 (2021-05-12)

Features

  • add mimeTypes validation for uploads (a5fcdf0)
  • disables user scalable in mobile (#177) (46c1a36)
  • exposes locale within preview function (2d67448)
  • restrict upload mime types in file picker (1c6f32f)

0.6.7 (2021-05-07)

Features

  • add ability to hide gutter for RichText fields (e791c5b)
  • allows group field gutter to be disabled (9aebeaf)
  • exposes component types (99466fa)
  • shrink image thumbnails on larger screens (e565fa6)
  • support global date format (670ccf2)

0.6.6 (2021-04-27)

Bug Fixes

  • graphql returns compatible error format (6f188b1)
  • handle rich text saving as empty string (382089b)
  • removes incoming.data.length check, since data is typed as a keyed array when it is an instance of APIError (2643e1a)
  • support image resizing on M1 chip (8cfc039)
  • update operation can save password changes (a85bf9e)

0.6.5 (2021-04-22)

Features

0.6.4 (2021-04-21)

Bug Fixes

  • allows _verificationToken to come back via showHiddenFields (74430ea)

0.6.3 (2021-04-21)

Bug Fixes

  • make admin field properties in joi schema match TS types (519c021)
  • properly label arrays/blocks with plural and singular (fa49811)
  • safely parses incoming stringified richtext json (9c95c75)

0.6.2 (2021-04-19)

Features

  • modifies relationship field to react to changing relationTo (ddf25fb)

0.6.1 (2021-04-19)

Bug Fixes

  • cleans up duplicative columns (5f2073a)
  • graphql localized relationship bugs (280f809)
  • moves enableRichTextRelationship to proper spot (16ca22b)

Features

  • sets enableRichTextRelationship to true by default (9970470)

0.6.0 (2021-04-19)

BREAKING CHANGES

  • By default, all Collection and Global access control functions are now set to require a user to be logged in to interact through GraphQL or REST APIs. This default access control is set to ensure that your API data is secure out of the box. From there, you can opt to publicly expose API actions as you need.

Migration Instructions to 0.6.x

If you have any Collections or Globals that should be publicly available without being logged in, you need to define an access control function for each operation that needs to be publicly available.

For example, if you have a pages collection with no existing access control, and it should be publicly readable, you should change its config from this:

const Page = {
  slug: 'pages',
  access: {
    // No `read` access control was set
  },
}

To:

const Page = {
  slug: 'pages',
  access: {
    // Now we explicitly allow public read access
    // to this collection's documents
    read: () => true,
  },
}

If none of your collections or globals should be publicly exposed, you don't need to do anything to upgrade.

Bug Fixes

  • clears richtext element on enter, refocuses on toolbar button click (4b19795)
  • ensures api keys are properly populated in admin (4359a70)
  • ensures first relationship options are loaded only once (75a5b04)
  • searching on relationship fields properly fetches results (b86c3da)
  • upload useAsTitle set to filename by default (7db23f8)

Features

  • autolabel fields when label is omitted (#42) (b383eb6)
  • dynamically populates richtext relationships (3530424)
  • improve unique field value error handling (21b2bd4)
  • improves margins in rich text elements (20d7a01)

0.5.10 (2021-04-14)

Bug Fixes

  • feeds collectionSlug through me auth for graphql resolver (9ee2f9c)

0.5.9 (2021-04-14)

0.5.8 (2021-04-13)

Bug Fixes

  • revises graphql import syntax (20f1e6c)

0.5.7 (2021-04-13)

Bug Fixes

  • clears verificationToken when _verified is true (e58b152)
  • custom query / mutation types (a78fc97)
  • ensures email is still prefilled in auth configs (31c41c2)
  • ensures failed conditions send path to form (dff72fb)
  • handle add/remove labels for all usage of Array field type (ddf5df2)
  • make upload cell mimetype inline (414bc01)
  • pagination calculation for current range (000dee8)
  • updates config schema for graphQL mutations and queries (afc9454)

Features

  • auto verifies first user registration (8f720c0)
  • optimize save within Edit (91d37fb)
  • prevents DraggableSections from re-mounting on doc save (0094837)
  • remembers conditional field values after removing / readding (988d0a4)
  • remove mimetype from upload cell type (776b9c9)

0.5.5 (2021-04-02)

Features

  • allows soft breaks in rich text (ecd277d)

0.5.4 (2021-04-02)

Bug Fixes

  • ensures arrays and blocks reset row count on initialState change (9a7c0e3)
  • unique indices (23c45f1)

0.5.2 (2021-03-31)

Bug Fixes

  • modal issues with richtext relationship (8ea4407)

0.5.1 (2021-03-29)

Bug Fixes

  • base auth / upload fields no longer cause validation issues (23e1fc3)

0.5.0 (2021-03-29)

BREAKING CHANGES

  • changes global find and update payload api from global to slug as the key to find/update with (c71ba2b)

Bug Fixes

  • allows absolute urls within adminThumbnail (51b46d4)
  • handles empty indices within array field data (d47e2c5)
  • moving nested arrays now properly persists row count (5f9a5c8)
  • validation consistency within admin (50b9937)

Features

  • saves cursor position when relationship element is added to richText (d24b3f7)

0.4.7 (2021-03-15)

0.4.6 (2021-03-14)

Features

  • allows admin thumbnail to be set programmatically (b6a9fe4)
  • exports collection field hook types from payload/types (36aae5c)
  • only runs adminThumbnail func if image type (5e1ddb5)
  • provides field access control with document data (339f750)
  • reorders uploads to provide beforeChange hooks with upload data (3c42e6e)

0.4.5 (2021-03-04)

Bug Fixes

  • config validation allow admin dashboard (2d1d1b4)

0.4.4 (2021-03-04)

Bug Fixes

  • email verification template missing token (93ed664)

0.4.1 (2021-03-04)

Documentation

  • fixed broken links throughout docs (3afefbe)

0.4.0 (2021-02-28)

Breaking Changes

  • reverts preview function to only requiring the return of a preview URL (ca14e66)

Features

  • implements new billing model, including new Personal license which is free forever (c97ddeb)
  • simplifies logic in update operations (e268e25)
  • removes the requirement of returning a value from field hooks (4de5605)

Bug Fixes

  • properly exposes scss variables for re-use (c1b2301)
  • explicitly sets modal z-index and css breakpoints (c1b2301)
  • removes overwrite from update operation to ensure hidden fields don't get lost on document update (a8e2cc1)

0.3.0 (2021-02-23)

Bug Fixes

  • properly exposes scss variables for re-use (c1b2301)
  • explicitly sets modal z-index and css breakpoints (c1b2301)
  • removes overwrite from update operation to ensure hidden fields don't get lost on document update (a8e2cc1)

0.2.13 (2021-02-20)

Breaking Changes

  • Preview function now no longer takes form field state as an arg and instead takes a copy of the document itself

Features

  • supports newTab in Button, updates generatePreviewURL api to forward through PreviewButton (6b6297f)
  • detaches localization from mongoose entirely (162ec74)

Bug Fixes

  • infinite loop caused within block component (9e42d11)
  • sets sparse true if field localized and unique (2bc5c59)
  • returns entire doc to generatePreviewURL callback of PreviewButton (9b9d0f2)
  • log mongoose connect error message (e36c7d2)

Documentation

  • removes incorrect hasMany from upload field type (e549298)

0.2.12 (2021-02-1-0)

Bug Fixes

  • middleware for cors set up on static files
  • windows compatible upload filename paths

0.2.11 (2021-02-05)

Bug Fixes

  • middleware for cors set up on static files (55e0de1)
  • file size in local operations (0feb7b7)

0.2.11 (2021-02-05)

Features

  • allows upload through Local API (1a59028)

Bug Fixes

  • fix localization within blocks (e50fc1f)
  • forces fallbackLocale to null in update ops (3005360)

0.2.10 (2021-02-04)

Features

Bug Fixes

  • flag scss variables with default (8916e8a)
  • relationship component hasMany bug (d540706)
  • hide force unlock in admin ui when creating auth collection item (3bd0de0)

0.2.9 (2021-01-27)

Bug Fixes

  • field validation type can return promise (06ddab1)

0.2.8 (2021-01-25)

Chore

  • add bugs and keywords to package.json (37f5b32)

0.2.6 (2021-01-25)

0.2.5 (2021-01-25)

Bug Fixes

  • field gutter padding (90d2078)
  • richtext sticky toolbar within block (8218343)

0.2.4 (2021-01-24)

Bug Fixes

0.2.3 (2021-01-24)

Bug Fixes

  • ensures modal heights are 100% of viewport (7edab5d)

0.2.2 (2021-01-24)

Bug Fixes

  • revert serverURL config change (f558bd2)

Features

  • adds better serverURL validation (75056e2)

Reverts

  • Revert "docs: configuration overview describe serverURL and removed from code examples where not needed" (bd446b6)

0.2.1 (2021-01-24)

Features

0.2.0 (2021-01-23)

Bug Fixes

  • better error handler when sendMail fails (ea47736)
  • button css specificity (d8b5233)
  • migrates Condition UI value/operator pattern (d23cc20)
  • target es2019, optional chaining not supported for Node < 14 (52a0096)

Features

  • adds contributing guidelines (de5bf6e)
  • allows admins to autoverify via admin (a6a23e3)
  • auto-removes verificationToken upon manual user verify (2139eb4)
  • serverURL no longer required in config (4770f24)

0.1.146 (2021-01-18)

Bug Fixes

0.1.145 (2021-01-17)

Bug Fixes

  • add minLength and maxLength to textarea field validations (2c98087)
  • minLength field validation error messages (5e60b86)

0.1.144 (2021-01-16)

Bug Fixes

  • add default user to collections before checking for valid relationships (b2d05c7)
  • handle user collection 'auth: true' (c303711)

0.1.143 (2021-01-14)

Bug Fixes

  • payload schema validation allow '*' (bd92b0a)

Features

  • allows undefined collections (6bb58ce)

0.1.142 (2021-01-09)

Bug Fixes

  • adds disableDuplicate to schema validation of collections config (e9ed7ee)

Features

  • add getAdminURL and getAPIURL functions (8db73bb)
  • adds build to CI (87a1717)
  • disable graphQL flag that will bypass gql on payload init (d78c76e)

0.1.141 (2021-01-07)

Bug Fixes

  • properly exports ES6 components (f493263)

0.1.140 (2021-01-07)

Bug Fixes

  • admin field error messages (423df3f)

0.1.139 (2021-01-06)

Bug Fixes

  • improves typing in delete op (644519c)
  • use FileSize and ImageSize types (4d6871a)

0.1.138 (2021-01-06)

Bug Fixes

0.1.137 (2021-01-05)

Bug Fixes

0.1.136 (2021-01-05)

0.1.135 (2021-01-05)

0.1.134 (2021-01-05)

Bug Fixes

  • updates payload-config path within webpack (6bf141c)

0.1.133 (2021-01-05)

0.1.132 (2021-01-05)

Bug Fixes

  • renames webpack config alias (c0636df)

0.1.131 (2021-01-05)

0.1.130 (2021-01-05)

0.1.129 (2021-01-05)

0.1.128 (2021-01-05)

Bug Fixes

  • adds default thumbnail size (f582a25)
  • config validation of block imageURL (c572057)
  • default config value for email removed as the property was moved out of config (cf89d4c)
  • demo email start on payload init (57d2c86)
  • Edit view main / sidebar widths (e067fa1)
  • graphQL access (4d871c2)
  • graphQL logout (709cc9c)
  • improves edit view layout constraints (0f7046b)
  • issues with select hasMany (a0bf503)
  • lowecases joi like everywhere else in payload (5823a86)
  • payload config remove types for email (faec969)
  • reinstate explicit labels for AllFields collection (885c73c)
  • removes delete and unlock from baseField type and schema (4fa942f)
  • removes old reliance on config.email (e093e06)

Features

  • allows for refresh operation to accept a deliberately specified token (7d05069)
  • types this within crreate op (d43ff8b)

0.1.127 (2020-12-31)

Bug Fixes

  • converts class methods to arrow functions (662839f)

0.1.126 (2020-12-30)

Bug Fixes

  • adds delete and unlock to joi baseField schema (36d51de)

0.1.125 (2020-12-30)

Bug Fixes

  • removes prod source maps (eeea06d)

0.1.124 (2020-12-30)

Bug Fixes

  • disable requiring default props in eslint (64cf321)
  • disables inline sourcemaps for admin dist (8090b2a)
  • type issues that arose from reorganizing certain config props (0c03c2e)
  • updates typing on DatePicker component and joi schema (5100fd3)
  • webpack config override (8401400)

Features

  • allows for adding custom CSS in addition to SCSS overrides (544a4db)

0.1.123 (2020-12-28)

Bug Fixes

  • allows config validation to accept esmodules as components (b8ad84c)
  • prod webpack publicPath (8bda6ea)

0.1.122 (2020-12-28)

Bug Fixes

  • improves field schema validation (db13512)
  • safely accesses field permissions (1fff737)

Features

  • sends config through babel/register (fec718e)
  • splits tsconfig between admin and server (efe0b40)

0.1.121 (2020-12-27)

0.1.20 (2020-12-27)

Bug Fixes

  • production webpack css (6e83edc)
  • removes unnecessary meta defaults in admin config (0117f18)

Features

  • improves edit scroll UX in Account and Globals (604922a)
  • improves scrolling UX in Edit views (a715a42)

0.1.19 (2020-12-27)

Bug Fixes

  • copyfiles, autocomplete transition (5b8c721)

Features

  • flattens build into one command (8571dc3)

0.1.18 (2020-12-27)

0.1.17 (2020-12-27)

0.1.16 (2020-12-27)

Bug Fixes

  • handle access result gracefully (1cd578e)
  • undo property fix, field exists - bad typing (66946c8)

0.1.15 (2020-12-02)

0.1.14 (2020-12-02)

0.1.13 (2020-12-02)

0.1.12 (2020-12-02)

0.1.11 (2020-12-01)

0.1.10 (2020-12-01)

0.1.9 (2020-11-25)

0.1.8 (2020-11-25)

0.1.7 (2020-11-25)

0.1.6 (2020-11-25)

0.1.5 (2020-11-25)

0.1.4 (2020-11-25)

0.1.3 (2020-11-24)

0.1.2 (2020-11-24)

0.1.1 (2020-11-24)

0.1.0 (2020-11-24)

Bug Fixes

  • webpack: more require.resolves needed (924eb1d)
  • webpack: use require.resolve for modules (badd59a)
  • add missing webpack dep path-browserify (8789dae)

Features

0.0.141 (2020-11-20)

0.0.140 (2020-11-20)

Features

  • show email creds when explicitly set to 'mock' (dbd305a)
  • use react-toastify for notifications (131dd51)
  • validate admin user (83d32e4)

0.0.139 (2020-11-17)

Bug Fixes

0.0.138 (2020-11-17)

Bug Fixes

  • allow e-mail to be unconfigured, remove default fromName and fromAddress (dceeeaa)
  • auth json schema didn't allow auth as boolean (0694a09)
  • properly concat verification and locking fields (2624ad5)

Features

  • add blind index for encrypting API Keys (9a1c1f6)
  • add license key to access routej (2565005)

0.0.137 (2020-11-12)