# v8.1.0 ## 11/03/2025 1. [](#bugfix) - Fixed an issue with DropZone file field with `js_pipeline` enabled [#621](https://github.com/getgrav/grav-plugin-form/issues/621) - Fixed general pipeline issues with form javascript 1. [](#improved) - Added a field-based configuration of basic-captcha [#622](https://github.com/getgrav/grav-plugin-form/issues/622) - Improved filesize min/max error handling # v8.0.6 ## 10/07/2025 1. [](#bugfix) - Fixes recaptcha v2 regression issue [#617](https://github.com/getgrav/grav-plugin-form/issues/617) # v8.0.5 ## 09/23/2025 1. [](#bugfix) - Fixes captcha when form name contains hyphens [#618](https://github.com/getgrav/grav-plugin-form/issues/618) # v8.0.4 ## 08/28/2025 1. [](#bugfix) - Fixes `CaptchaManager::validateCaptcha()` not working with PHP 7.4 # v8.0.3 ## 08/25/2025 1. [](#bugfix) - Fixes for basic captcha default size + blueprints # v8.0.2 ## 08/25/2025 1. [](#bugfix) - Case sensitivity issues with `ReCaptchaProvider` class # v8.0.1 ## 08/25/2025 1. [](#bugfix) - Fixed error: Default value of params with a class can only be null # v8.0.0 ## 08/25/2025 1. [](#new) - Rewrote XHR support to be more robust and easier to use - Added `hCpatcha` field support - Added `Turnstile` XHR support - Added ability to support 3rd party captcha mechanisms - Added `Filepond` field support for alternate upload type - Dropzone XHR support - PHP 8.4 compatibility 1. [](#improved) - Added support for `data_label:` in fields for use with data twig templates to override the displayed label - Matched formatting of minus operator in BasicCaptcha to plus operator [#596](https://github.com/getgrav/grav-plugin-form/pull/596) - Dynamic field proxying # v7.4.2 ## 10/28/2024 1. [](#improved) - Enhanced the `input` tag to include a disabled attribute [$601](https://github.com/getgrav/grav-plugin-form/pull/601) - Updated logging methods to support Monolog2+ # v7.4.1 ## 10/22/2024 1. [](#improved) - `honeypot` field tweaks # v7.4.0 ## 03/29/2024 1. [](#improved) - Better modular form support - Support for multiple Ajax/XHR forms on a single page either modular-based or manually injected - Yarn libraries updated 1. [](#bugfix) - Fixed an issue with cache being tied to `core` cache_id rather than the more appropriate `pages` cache_id, which could lead to form properties being cached even when modified. # v7.3.0 ## 12/14/2023 1. [](#new) - Added XHR/Ajax form submission as an option in the form blueprint. See [Learn Forms](https://learn.getgrav.org/17/forms/forms/how-to-ajax-submission) for details. # v7.2.2 ## 12/13/2023 1. [](#improved) - Add _inline errors_ for `file` field. Useful in combination with `form: no-validate: true` form setting. - Validate filename against `uploads_dangerous_extensions` when using the `save:` action 1. [](#bugfix) - Cleared 'basic captcha' value when invalid # v7.2.1 ## 06/27/2023 1. [](#improved) - Added some optional debug output to help isolate form loading problems 1. [](#bugfix) - More robust fix for multi-language form caching # v7.2.0 ## 06/21/2023 1. [](#bugfix) - Fixed a long-standing bug with cached forms not working properly in multi-language scenarios # v7.1.3 ## 05/09/2023 1. [](#improved) - Removed `FILTER_SANITIZE_STRING` input filter in favor of `htmlspecialchars(strip_tags())` - Fixed a deprecated message when using `Route::_toString()` - Require Grav `v1.7.41` as it contains `GRAV_SANITIZE_STRING` constant # v7.1.2 ## 01/08/2023 1. [](#bugfix) - Fixes issue with multiplication type BasicCaptcha Math Captcha [#587](https://github.com/getgrav/grav-plugin-form/issues/587) # v7.1.1 ## 11/29/2022 1. [](#bugfix) - Fix missing blueprint entries for Turnstile configuration [#583](https://github.com/getgrav/grav-plugin-form/issues/583) # v7.1.0 ## 11/16/2022 1. [](#new) - Added Cloudflare's `turnstile` captcha integration [documentation](https://learn.getgrav.org/17/forms/forms/fields-available#turnstile-field-cloudflare) # v7.0.2 ## 10/05/2022 1. [](#bugfix) - Fix for modular form definitions at root-level (useful for storing shared forms) # v7.0.1 ## 09/20/2022 1. [](#improved) - Provided some basic CSS styling for new captcha field # v7.0.0 ## 09/20/2022 1. [](#new) - Added a new custom `basic-captcha` option with **character** and **math** puzzles. No 3rd-part service required. # v6.0.4 ## 08/08/2022 1. [](#improved) - Added `attributes` to field [#573](https://github.com/getgrav/grav-plugin-form/pull/573) # v6.0.3 ## 05/05/2022 1. [](#bugfix) - Regression: Fixed broken `addForm()` method # v6.0.2 ## 05/02/2022 1. [](#bugfix) - Fixed `forms({ route: '/forms/_myform' })` not finding form from non-routable pages (second try) # v6.0.1 ## 04/25/2022 1. [](#improved) - Improved `prepare_form_field()` twig method to include `plain_name` 1. [](#bugfix) - Fixed `columns` and `column` fields with `.dotted` variables inside to ignore columns and column names - Fixed `forms({ route: '/forms/_myform' })` not finding forms from non-routable pages # v6.0.0 ## 03/28/2022 1. [](#improved) - Added log warning when trying to access form by non-unique name - Optimized form caching by not initializing the forms in `onPageProcessed` event anymore - **BACKWARD COMPATIBILITY**: As form initialization has been delayed, logic relaying on `onPageProcessed` with forms may not work anymore 1. [](#bugfix) - Fixed select field where option is iterable (#558) - Fixed `FormPlugin::getForm()` to properly search the current page first - Fixed `FormPlugin::getForm()` to ignore fallback if the page was given as parameter - Fixed dynamic forms to work with cache turned on - Fix nested `toggleable`: originalValue now checks with `??` instead of `is defined` # v5.1.7 ## 03/14/2022 1. [](#new) - Added `access` support for buttons 2. [](#bugfix) - Fixed tabs in the frontend to ensure JS is loaded # v5.1.6 ## 02/07/2022 1. [](#bugfix) - Fixed Select field when using OptGroups, not allowing key/values [#541](https://github.com/getgrav/grav-plugin-form/issues/541) - Support for translatable OptGroup labels in Select field [#540](https://github.com/getgrav/grav-plugin-form/issues/540) # v5.1.5 ## 01/24/2022 1. [](#bugfix) - Fixed case in selectize field where custom new entries would not be stored in non `multiple` lists # v5.1.4 ## 11/16/2021 1. [](#bugfix) - Fixed buttons no longer rendered [#537](https://github.com/getgrav/grav-plugin-form/issues/537) - Allow `select` field to customize `autocomplete` attribute # v5.1.3 ## 10/26/2021 1. [](#new) - Require **Grav 1.7.24** - Added support to disable a form, making it readonly - Added `|value_and_label` Twig filter to convert options to value/label pairs 1. [](#improved) - Improved Twig function `include_form_field()` to allow the second parameter to be an array of layouts # v5.1.2 ## 09/29/2021 1. [](#improved) - Improved support for Twig 2/3 # v5.1.1 ## 09/14/2021 1. [](#new) - Require **Grav 1.7.21** 1. [](#bugfix) - Fixed accidental admin plugin requirement for YAML filter in the form - Fixed `GravForm.config` JS to have correct `current_url` and `current_params` settings - Fixed custom file upload and remove routes - Fixed bug where uploading file has no effect [#349](https://github.com/getgrav/grav-plugin-form/issues/349) - Fixed field with numeric field name in `prepare_form_fields()` [#530](https://github.com/getgrav/grav-plugin-form/issues/530) # v5.1.0 ## 08/31/2021 1. [](#new) - Require **Grav 1.7.19** - Added support for custom form layouts - Added Twig function `prepare_form_fields()` and `prepare_form_field()` to prepare form fields and field array - Added Twig function `include_form_field()` to get all include paths for the field type - Make `nonce` to a customizable field 1. [](#bugfix) - Fixed bad cookie value for remembering the position of nested tabs # v5.0.3 ## 06/15/2021 1. [](#improved) - Removed the windows `\r\n` line breaks + extraneous escaping in `data.txt.twig` - Use `base64_encode` filter rather than function # v5.0.2 ## 04/23/2021 1. [](#improved) - Better message for invalid nonce [#513](https://github.com/getgrav/grav-plugin-form/issues/513) - Better error if `Form::getPage()` gets called too early [#518](https://github.com/getgrav/grav-plugin-form/issues/518) - Added support for custom Toggle id # v5.0.1 ## 03/17/2021 1. [](#improved) - Updated `de` language [#510](https://github.com/getgrav/grav-plugin-form/pull/510) - Better field type definitions for avatar and file fields 1. [](#bugfix) - Fixed toggle highlight when there's no value - Fixed wrong selected values in `select` field with integer and boolean values - Fixed changelog display [#502](https://github.com/getgrav/grav-plugin-form/pull/502) # v5.0.0 ## 02/17/2021 1. [](#new) - Requires **Grav 1.7.0** - Allow admins to temporarily disable form process actions by setting the value to `false` [#481](https://github.com/getgrav/grav-plugin-form/pull/481) 1. [](#improved) - Add `id` attribute to hidden field [#495](https://github.com/getgrav/grav-plugin-form/pull/495) - Escape text as YAML in multi-line textarea [#464](https://github.com/getgrav/grav-plugin-form/pull/464) 1. [](#bugfix) - Fixed reCaptcha v3 incompatibility with multiple forms on the same page sharing different actions [#416](https://github.com/getgrav/grav-plugin-form/issues/416) - Toggle fields do not save `false` if they are `toggleable` [#497](https://github.com/getgrav/grav-plugin-form/issues/497) - Data template fixes [#494](https://github.com/getgrav/grav-plugin-form/pull/494) - Fix deprecated Twig method # v4.3.1 ## 01/31/2021 1. [](#improved) - Updated deprecated `Twig_SimpleFunction` code - Added Lithuanian translation [#485](https://github.com/getgrav/grav-plugin-form/pull/485) 1. [](#bugfix) - Fixed state of the checkbox if no value is provided - Fixed evaluating default value in `hidden` field (thanks @NicoHood) - Fixed default value to come from the `Form` in overridable field (thanks @NicoHood) - Fix for disabling `client_side_validation` [#482](https://github.com/getgrav/grav-plugin-form/pull/482) - Fix for translations in `select` field in data template [#475](https://github.com/getgrav/grav-plugin-form/pull/475) - PHPDoc fixes # v4.3.0 ## 12/14/2020 1. [](#new) - Added a new ‘condition’ attribute for tab for logic to process if it should display or not 1. [](#improved) - Added priority to form translations/config 1. [](#bugfix) - Fix admin access check [#463](https://github.com/getgrav/grav-plugin-form/pull/463) # v4.2.0 ## 12/02/2020 1. [](#improved) - Added support for arbitrary `attributes` on `form`, `textarea` and `checkbox` and `buttons`. [#447](https://github.com/getgrav/grav-plugin-form/issues/447) [#448](https://github.com/getgrav/grav-plugin-form/issues/448) - Better support for array field key/value when either key or value are left empty - Allow data-\* form parameters to be used as