### 2.9.6.1 - Fixed a PHP fatal error that occurs when the gform_form_switcher_forms filter returns an invalid value, or when a deleted form remains in the current users recent forms list. ### 2.9.6 | 2025-04-08 - Added a performance improvement by making the form switcher only show the most recent 10 forms. - Updated the [`gform_form_switcher_forms`](https://docs.gravityforms.com/gform_form_switcher_forms/) filter to allow developers to also filter the forms that show up in the form switcher search results. - Updated dropdowns in the admin to be more consistent. - Fixed an issue where `save_callback` is not called for fields located in tabs. - Fixed an issue where the submit button is replaced with a next button on the last page of a multi-page form when that page is hidden by conditional logic and fails validation. - Fixed an issue where the field map setting is not working when no conflict mode is enabled. - Fixed an issue where the form submits or the next page is displayed if the previous button does not include the `gform_previous_button` class when clicked. Note: When using filters like `gform_submit_button`, `gform_next_button`, or `gform_previous_button` to replace the input elements with button elements, make sure to keep the attributes from the original elements. [Example code](https://docs.gravityforms.com/gform_submit_button/#h-1-change-input-to-button). - Fixed an issue where a javascript error occurs if a calculation is attempted and the calculation field does not have an input. - API: Added inline documentation for the Foundation layer of the Theme Framework. - API: Added temporary blocking mechanism when version.php API calls return server errors (5xx) to prevent excessive failed requests. - API: Updated the generic map setting field to support using textareas when mapping to a custom value. ### 2.9.5 | 2025-03-20 - Fixed an issue where a javascript error is thrown when using multiple forms on the same page with conditional logic. - Fixed a bug that causes a PHP error when you try to duplicate a duplicate of a form. Credit: The GravityKit Team. - Fixed a JavaScript error that occurs when the selected option is not found in the pricing fields meta retrieved post render. - Fixed an issue where the total is not updated when the form is embedded using the shortcode, and the selected option field choices are being modified via a form filter based on a query argument. - Fixed various issues with the new Ajax submission functionality to make sure that hooks and filters are run and validation messages are displayed correctly. - Fixed a PHP notice that occurs on post or page display when the embedded form has been deleted. - Updated the form import confirmation message to display the count of both failed and successful forms and to include a link to the list of imported forms. - Removed hidden fields that provide instructions in the form templates. - AF: Fixed a PHP notice that occurs when creating or editing a coupon. - API: Added a new User Select field to the Settings API. - API: Updated the submission process to support submission method changes via the [gform/submission/pre_submission](https://docs.gravityforms.com/gform-submission-pre_submission/) filter. - API: Removed support for the SUBMISSION_METHOD_CUSTOM submission method. ### 2.9.4 | 2025-02-25 - Added the [`gform_feed_settings_before_fields`](http://docs.gravityforms.com/gform_feed_settings_before_fields/) filter to allow developers to change the content that is displayed before the feed settings. - Fixed an issue where field-specific validation was no longer running when No Duplicates setting was enabled. - Fixed an issue that prevents the form editor from working properly when the form doesn't have a submit button configured. - Fixed a styling issue with the generic field map setting where the merge tag link overlaps the input. - Fixed an issue where the Gravity Forms block is not rendering or working correctly in the site editor (iframed block editor). - Updated the form switcher so that it stays on the same settings page when switching forms. - Updated the minimum WordPress version to 6.5. - Updated the minimum PHP version to 7.4. - Updated the minimum WordPress version (for support) on the System Status page to 6.6. - API: Added GFAPI::update_entry_feed_status(), GFAPI::get_entry_feed_status(), and GFAPI::get_entry_feed_status_key(). - AF: Added GFFeedAddOn::save_entry_feed_status(), GFFeedAddOn::post_process_feed(), and GFFeedAddOn::fulfill_entry(). - AF: Updated GFFeedAddOn::maybe_process_feed() to support saving the feed processing result for compatible add-ons. This is dependent on the value returned by the add-ons process_feed() method: + `void` or `null` when the feed status should not be saved. + `false` or a `WP_Error` when a failed status should be saved. The `code`, `message`, and `data` properties from the `WP_Error` will also be saved. + `true` or the `$entry` when a success status should be saved. ### 2.9.3 | 2025-02-11 - Added the [`gform_file_upload_tmp_dir`](http://docs.gravityforms.com/gform_file_upload_tmp_dir/) filter to allow developers to change the temporary directory used for file uploads. - Fixed an issue with conditional logic for numbers formatted as date or time. - Fixed an issue that causes the entry list to sometimes have display problems on mobile screens. - Fixed an issue where some icons are missing in compact view in the form editor. - Fixed an issue where Ajax submissions can abort when the field values block setting contains multiple parameters or when using a tabindex of -1. - Fixed an issue where Ajax submissions can abort when a third-party embed method passes a string instead of a boolean as the value of the $display_title or $display_description arguments of the gravity_form function. - Fixed an issue where calculations based on an Image Choice field only run if you click the input, not the image. - Fixed an issue where the form list page throws a JavaScript error if the user does not have the `gravityforms_create_form` capability. - Fixed an issue that allows the File Upload Field to bypass validation checks when using a maximum file constraint. - Fixed an issue where the `:value` of product fields in calculations uses price upon submission. - Fixed an issue where changing the 'gform_sticky_admin_messages' database values can cause a fatal error. - Fixed an issue with product fields that do not update the total when the markup is updated via custom code. - Removed "send you a birthday cake" custom validation message from template library forms. - Updated handling of images for the Image Choice field so that thumbnail sizes are only generated for images used in the field. - Updated the form preview to use the Orbital theme. - API: Updated the React components to support the use of the newly created internal component icon kit. ### 2.9.2 | 2025-01-16 - Added a screen reader announcement to the form editor when a new field is added to a form for improved accessibility. - Added security enhancements. Credit: mikemyers via Wordfence. - Added settings for "sort column" and "sort order" to the Screen Options settings on the form list page. - Added the [`gform_check_empty_index_file_exists`](https://docs.gravityforms.com/gform_check_empty_index_file_exists) filter to allow developers to check whether an empty index file exists before creating a new one. - Added the [`gform_value_pre_duplicate_check filter`](https://docs.gravityforms.com/gform_value_pre_duplicate_check) to allow filtering a field's value before checking if it has a duplicate value. - Fixed an issue that causes `GFFormDisplay::is_last_page()` to return the wrong result when the last page has a validation error. - Fixed an issue that causes a fatal error if an asset is enqueued incorrectly. - Fixed an issue that causes the Survey single line text field to have an invalid `aria-describedby` attribute. - Fixed an issue that prevents JS events from firing when an image in an Image Choice field is clicked. - Fixed an issue that prevents the Description Placement setting from showing in the form editor before the form is saved. - Fixed an issue that prevents the [`gform_progressbar_start_at_zero`](https://docs.gravityforms.com/gform_progressbar_start_at_zero) filter from working. - Fixed an issue that prevents the page dropdown on the confirmation settings page from finding pages when the permalinks are set to plain. - Fixed an issue where a custom progress bar implemented with the [`gform_progress_bar`](https://docs.gravityforms.com/gform_progress_bar) filter can throw an error in Gravity Forms 2.9. - Fixed a fatal error that could occur when the `GFCommon::replace_variables_prepopulate()` function is called with a non-string value. - Fixed an issue that prevents the product quantity label from matching the input field. - Fixed an issue that causes form validation errors if a product field has a quantity of 0 and the form includes shipping and total fields. - Fixed an issue that causes the repeater child fields to not use the [`gform_field_validation`](https://docs.gravityforms.com/gform_field_validation) filter custom message. - Fixed an issue that prevents the total from being calculated in some situations, including when using a product drop down with "Enable enhanced user interface" enabled. - Fixed an issue where Hooks.js is not being added to the header when using certain hosting environments. - Fixed an issue that prevents styling from being applied to notifications. - Fixed an issue where an empty error message is displayed if the theme or another plugin outputs an empty line in response to a resend notification AJAX request. - Fixed an issue where form block theme settings are visible when the default form theme is not Orbital. - Fixed an issue where inserting a merge tag for a field with double quotes in the label is not working properly. - Fixed an issue where invalid data on a multiple file upload field can cause the entry export to break on PHP 8+. Credit: The GravityKit Team. - Fixed an issue where the [`gform_allowable_tags`](https://docs.gravityforms.com/gform_allowable_tags) filter is not applied when using the filter without the optional `$form_id` property. Credit: The Gravity PDF team. - Fixed an issue where the license status messages are not being displayed correctly on the System Settings Updates page. - Fixed an issue where the note added by the custom anti-spam filter is overridden when the Akismet integration is enabled. - Fixed an issue where the total field is not calculated correctly on certain forms with conditional logic animations enabled. - Fixed an issue where the values of a custom generic_map settings field are not populated in the form settings page. - Fixed an issue where unnecessary form count queries are executed outside Gravity Forms pages. - Updated the number field to display the aria-describedby attribute when a range is defined and validation fails. - Updated the preview of the reCAPTCHA field in the form editor. - Removed `GFForms::filter_query()` method which was deprecated in 2.8.13. - API: Added `GFAPI::maybe_process_feeds()`, `GFAPI::get_processed_feeds_meta()`, and `GFAPI::update_processed_feeds_meta()`. - API: Added the [`gform_allow_async_feed_reprocessing`](https://docs.gravityforms.com/gform_allow_async_feed_reprocessing) filter. - API: Fixed an issue where the entries endpoint "_labels" is not respecting admin label context for survey fields. - API: Updated the state management JS module to return a shallow copy of objects retrieved via the get method. - API: added an action hook to add field settings to the choice options section of the form editor sidebar. ### 2.9.1 | 2024-12-12 - Added detection of SQLite database to the system report. - Added focus states to links in the validation summary and autofocus to the validation summary for better accessibility. - Added screenreader support to the password strength indicator on the Password field. - Updated number fields that are read-only to use the read-only styles. - Updated styling of failed payment and cancelled subscription entry notes. - Updated the currency dropdown on the plugin settings page to not use Select2 for improved accessibility. - Updated the license validation messages to be more specific when there is a server error or API rate limit error. - Updated the minimum WordPress version (for support) on the System Status page to 6.5. - Fixed a PHP notice that can occur when viewing the Form Settings for a pre-existing form. Credit: The GravityKit Team. - Fixed a fatal error that can occur when adding additional files to a multifile upload field. - Fixed an accessibility issue with the date dropdown field by adding hidden labels to the dropdowns. - Fixed an issue in the entry detail screen where the Notes metabox is misaligned in Safari 18.0. - Fixed an issue that can sometimes prevent the total field from updating if some products have conditional logic rules. - Fixed an issue that cause the form or confirmation to be unstyled when AJAX is enabled. - Fixed an issue that causes delayed feeds to be executed twice in some cases. - Fixed an issue that prevents [`gform_ajax_spinner_url`](https://docs.gravityforms.com/gform_ajax_spinner_url/) from working. - Fixed an issue that prevents the [`gform_price_change`](https://docs.gravityforms.com/gform_price_change/) event from firing. - Fixed an issue where Gravity Forms checks if a schema upgrade is needed on every page load. - Fixed an issue where a choice with an empty label is selected by default when the field doesn't have a value. - Fixed an issue where a console error is thrown when the next button is clicked on a multi-page form that contains a payment field. - Fixed a fatal error that occurs on submission if modified state input value is an array. - Fixed a fatal error that occurs when the page query argument is an array. Credit: Automattic. - Fixed an issue where a fatal memory error can occur on the Form Settings page in some hosting environments when a large number of forms exist. - Fixed an issue where apostrophes in page names are sanitized incorrectly in Pagination Options. - Fixed an issue where aria attributes for the list field are not translating. - Fixed an issue where disabled image choice inputs are still able to be selected/unselected. - Fixed an issue where email fields in notification settings do not pass validation if merge tags are used. - Fixed an issue that prevents some options from being removed when going through the uninstall process. - Fixed an issue where raw HTML is displayed in the tooltip of the column selector icon on the entries page. - Fixed an issue where strings aren't translated on the block editor. - Fixed an issue where submit and paging buttons which include an onclick attribute with a value of `gform.submission.handleButtonClick(this)` are missing a trailing semicolon. - Fixed an issue where the Export Personal Data tool can export entries that are not associated with the user if a form was edited with the Gravity Forms CLI Add-On. - Fixed an issue where the Predefined Choices modal is not translated. - Fixed an issue where the database update process can causing a fatal error when the database does not need to be updated. - Fixed an issue where the default styles are output even when disabled from the global settings. - Fixed an issue where the {embed_url} and {referer} merge tags output the wrong values when the form is submitted using the new AJAX submission method. - Fixed an issue where wptexturize is causing extra curly quotes to be added to the textarea. - Fixed an issue with conditional logic when the default currency uses a comma as the decimal separator. - Fixed an issue on form submission that can prevent the honeypot and reCAPTCHA V3 from working correctly when the submit button has been customized. - Fixed an issue with the conditional logic field setting where multiple rules are added even though the + button was only clicked once. - Fixed an issue with the new AJAX functionality that causes the confirmation message to lose its styling in certain situations. - Fixed an issue on form submission that can prevent the honeypot and reCAPTCHA V3 from working correctly when the submit button has been customized. - AF: Fixed an issue where an undefined array key warning occurs if the [`gform_admin_pre_render`](https://docs.gravityforms.com/gform_admin_pre_render) filter is called in a context where a form is not available. - AF: Updated the Payment Add-On base class so that payment add-ons such as Stripe can enable payment status rules in the confirmation conditional logic. - AF: Updated the frontend feed data with extra relevant feed information that can be used by Payment Add-Ons. - API: Added the [`gform_disable_dom_parser`](https://docs.gravityforms.com/gform_disable_dom_parser) filter that can be used to disable the DOM Parser. - API: Removed the following form Theme Framework global CSS API properties: `--gf-ctrl-shadow-color-focus`, `--gf-ctrl-shadow-size-focus`, `--gf-ctrl-shadow-offset-color-focus`, `--gf-ctrl-shadow-offset-size-focus`, `--gf-ctrl-shadow-focus`. - API: Updated the form Theme Framework to use box shadows instead of outlines for focus states for better accessibility. ### 2.9.0 | 2024-11-05 - Added a new "Multiple Choice" field. - Added a new "Image Choice" field. - Added new AJAX submission functionality. - Added support for encrypting and decrypting settings fields. - Added the ability to import images into the media library when forms are imported. - Added screen reader only headings to the form editor for better accessibility. - Added accessibility improvements to the "allowed file extensions" setting in the form editor. - Added notices about the removal of Legacy Markup in 3.1.0. - Added the ability to output config scripts by using the `gform_output_config` action. - Added the ability to clear default choices in the choices flyout in the form editor. - Updated the form editor to use the Orbital theme. - Updated location of some field settings from the choices flyout to the form editor sidebar. - Updated field configuration error messages in the form editor to be more consistent. - Updated browser alerts in the form editor to use a dialog modal. - Updated the markup of many settings in the form editor sidebar for better accessibility. - Updated the "Select All" functionality on the Checkbox field so that if all choices have been selected, and then one is deselected, the button goes back to saying "Select All". - Updated the compact view in the form editor to show icons based on the field type, not the field input type. - Updated asset enqueuing in the front end and the admin to be more efficient. - Fixed an issue that prevents users from closing the conditional logic flyout in the form editor. - Fixed an issue where dynamic field population is not working for fields inside a Repeater. - Fixed an issue where forms with multiple pages hidden by conditional logic can fail honeypot validation. - Fixed an issue where the full screen handler performs an unnecessary database query, which impacts front-end performance for some hosting environments. - Fixed an issue where the embed_post and custom_field merge tags return empty when used in notifications and add-on feeds that are processed asynchronously. - Fixed an issue where canceling a confirmation dialog still applies the change on choice fields. - Fixed an issue in the Orbital theme where ordered and unordered lists are not using the theme list-style property where expected. - Fixed an issue where the inline styles for the Theme Framework are always being output for forms using the Orbital theme when they should be disabled. - Fixed a bug that causes the wrong page titles on the Import Forms and Export Forms pages. - Removed support for Internet Explorer. - AF: Added the [`gform_entry_meta_pre_render_feed_settings`](https://docs.gravityforms.com/gform-entry-meta-pre-render-feed-settings) filter, so entry meta fields can be made available to the feed conditional logic setting. - API: Added the `source_id` column to the `gf_entry` table. - API: Added the [`gform_field_choices_max_count_visible`](https://docs.gravityforms.com/gform-field-choices-max-count-visible/) filter to allow for the setting of the maximum number of choices shown in the form editor for choice based fields. - API: Added the [`gform_image_choice_input_visibility`](https://docs.gravityforms.com/gform-image-choice-input-visibility/) filter for the default input visibility for the Image Choice field. - API: Added the [`gform_image_choice_label_visibility_default`](https://docs.gravityforms.com/gform-image-choice-label-visibility-default/) filter for the default label visibility for the Image Choice field. - API: Added the [`gform_checkbox_limit_exact_message`](https://docs.gravityforms.com/gform-checkbox-limit-exact-message/) filter to allow the customization of the message displayed on the Multiple Choice field when the field requires an exact number of selections. - API: Added the [`gform_checkbox_limit_range_message`](https://docs.gravityforms.com/gform-checkbox-limit-range-message/) filter to allow the customization of the message displayed on the Multiple Choice field when the field requires a range of selections. - API: Added the [`gform_checkbox_limit_max_message`](https://docs.gravityforms.com/gform-checkbox-limit-max-message/) filter to allow the customization of the message displayed on the Multiple Choice field when the field requires a maximum number of selections. - API: Added the [`gform_checkbox_limit_min_message`](https://docs.gravityforms.com/gform-checkbox-limit-min-message/) filter to allow the customization of the message displayed on the Multiple Choice field when the field requires a minimum number of selections. - API: Added the [`gform_default_choice_alignment`](https://docs.gravityforms.com/gform-default-choice-alignment/) filter to set the default alignment for the Multiple Choice field. - API: Added a JS module to keep track of current product field selection. - API: Added a JS state management module to keep track of form stata. - API: Added the [`gform_source_id_pre_save_entry`](https://docs.gravityforms.com/gform_source_id_pre_save_entry/) filter, so the value to be saved to the entry source_id property can be overridden. - API: Added a new [`gform/ajax/post_page_change`](https://docs.gravityforms.com/gform-ajax-post_page_change/) JavaScript event that runs after a page change with the new AJAX functionality. - API: Updated the config framework to support form specific config items to be added to the config object and output to the page. - API: Updated the theme framework utility classes of `.gform-theme__disable` and `.gform-theme__disable-framework` to also disable theme framework styles for field labels and descriptions. - API: Deprecated the `UpdateFieldChoices` function. Use `RefreshSelectedFieldPreview` instead. - API: Removed the deprecated form Theme Framework global CSS API properties. - API: Added the [`gform_entry_meta_pre_evaluate_conditional_logic`](https://docs.gravityforms.com/gform-entry-meta-pre-evaluate-conditional-logic) filter, so the entry meta fields supported for use with conditional logic can be customized before the rules are evaluated. - API: Added the [`gform_entries_action_links`](https://docs.gravityforms.com/gform_entries_action_links/) filter to allow for modification of an entry action links in the form entries page. - API: Updated the product config logic so that it filters the form via the ['gform_pre_render'](https://docs.gravityforms.com/gform_pre_render/) filter. - API: Added a new Javascript event [`gform/post_init`](https://docs.gravityforms.com/gform-post-init/) that is triggered after the form has been initialized and can be used by add-ons to load necessary scripts after all Gravity Forms scripts are loaded. ### 2.8.18 | 2024-10-01 - Fixed spacing and margin issues in the admin and help sections for RTL mode. - Fix spacing and margin issues in the settings currency dropdown when viewing the site in RTL. - Fixed an issue where get_submitted_fields() is not returning the correct field values if meta keys are not numeric. ### 2.8.17 | 2024-08-26 - Updated the form restriction logging statements to include the form ID. - Fixed an issue where the license key is not saved for some sites in a multisite/network installation. ### 2.8.16 | 2024-08-12 - Added security enhancements. - Added unique aria labels to the main links on the form list, entry list, confirmation list, and notification list to improve accessibility. - Updated the licensing messages on the plugins page to be consistent with the settings page. - Updated the results page title to be unique for better accessibility. - Updates for WP 6.6 compatibility. - Fixed an issue where a number field with range has an invalid aria-describedby attribute when it fails validation. - Fixed issues with the choices flyout in the form editor in RTL languages. - Fixed an issue where a database error occurs during background processing if the site that queued the task is deleted. ### 2.8.15 | 2024-07-29 - Added improvements to translator comments. - Added improvements for WordPress 6.6 compatibility. - Updated the text of the donation form template to be more consistent. - Updated admin page titles to be unique for better accessibility. - Fixed a 404 link pointing to the Chosen library in the enhanced UI info box in the field settings sidebar. - Fixed an issue that sometimes prevents users from editing the "End Paging" settings. - Fixed an issue where temporary file uploads for abandoned submissions can remain longer than intended if the form is not submitted again. - Fixed an issue where the expected choices are not included in the Select a Field setting on the Notification configuration page when using the [`gform_email_fields_notification_admin`](https://docs.gravityforms.com/gform_email_fields_notification_admin/) filter. - Fixed an issue where a form embedded in the confirmation message can't submit because block styles are inserted in the middle of the init scripts. ### 2.8.14 | 2024-07-10 - Fixed the compatibility of the reCAPTCHA v2 field with Conversational Forms by removing the field from the form in Conversational view. - Fixed a PHP warning that occurs when the current user role only has the capability to access the System Status Page. ### 2.8.13 | 2024-06-26 - Fixed an issue where custom theme styles are sometimes not applied on confirmation page or when navigating between pages in a multi-page form. - Fixed an issue where the AJAX spinner init script is output in save and continue notifications, which can impact deliverability in some environments. - Fixed an issue where a choice of 00 in the minute settings for the form scheduled start and end times changes to 01 on save. - Updated and improved the performance of database queries by removing the legacy table check. - AF: Fixed an issue where a saved value of 0 is not displayed in text type settings. ### 2.8.12 | 2024-05-29 - Fixed an issue where a console error is thrown if gform.initializeOnLoaded is called directly. - Fixed an issue where the Conversational Forms Add-On settings page is not displayed if the site is using a plugin to manage roles and capabilities. ### 2.8.11 | 2024-05-15 - Fixed an issue where some forms are broken due a missing gform variable caused by recent changes to the Dom_Parser class. - Change the Dropdown component con compact view for the Droplist - Updated package version ### 2.8.10 | 2024-05-14 - Fixed a fatal error when a user submits a form with files attached to the Save & Continue notification. - Fixed memory exhaustion and performance issues caused by the Dom_Parser class being loaded on every request. - Fixed an issue with ajax-enabled multi-page forms with conditional logic, where fields that should be hidden by conditional logic are visible for a fraction of a second. - Fixed an issue where the conditional logic settings for the Address Field are displayed with wrong values if the [`gform_countries`](https://docs.gravityforms.com/gform_countries) filter is used to change the country list to include country codes. - API: Added the [`gformIsHidden`](https://docs.gravityforms.com/gform_is_hidden/) filter to allow developers to determine if a field is hidden by conditional logic. Credit: The Gravity Wiz Team. - API: Added the [`gform_generic_map_field_choices`](https://docs.gravityforms.com/gform_generic_map_field_choices) filter for options displayed in a Generic Field Map. Credit: The Gravity Wiz Team. ### 2.8.9 | 2024-04-30 - Added a new form setting to put field validation messages above inputs. - Added the [`gform_bypass_template_library`](https://docs.gravityforms.com/gform_bypass_template_library) filter to bypass the template library and create a blank form. - Fixed an issue where an invalid value in a hidden state field causes a fatal error on submission. - Fixed an issue where the wrong value populates into the "other" choice input if a Radio field with conditional logic has "other" choice enabled and a default value set. - Updated the backwards compatibility of the file upload field if no files are selected. ### 2.8.8 | 2024-04-23 - Added security enhancements. - Fixed a fatal error in WordPress 6.5 when using a 3rd-party add-on without a defined slug. - Fixed a PHP notice that is thrown when calling GFForms::get_form() with just the form ID parameter. - Fixed an issue where the submit button was blocked by the reCAPTCHA field in IOS devices when using certain themes. - Fixed an issue where the `gform_progressbar_start_at_zero` filter is not working with forms that have page conditional logic. - Fixed a PHP notice that can be displayed when instantiating the GF_Locking class in certain contexts. - Updated status indicator component to use improved markup and styles. ### 2.8.7 | 2024-04-03 - Fixed a bug where total calculation and post conditional logic events sometimes aren't called when using the `gform_abort_conditional_logic_do_action` filter. - Fixed a fatal error that sometimes occurs when deleting entries. - Fixed a bug that causes the plugins page to display "Auto-updates disabled" for Gravity Forms when auto-updates are turned on with the `auto_update_plugin` filter. - Fixed a bug that prevents the `gform_pre_validation` filter from running when an individual field is validated, such as in a conversational form. - Updated JavaScript and CSS from the assets directory to always load minified versions. - Updated the minimum WordPress version (for support) on the System Status page to 6.4. ### 2.8.6 | 2024-03-21 - Added *[gform_custom_merge_tags](https://docs.gravityforms.com/gform_custom_merge_tags/)* JavaScript filter to allow the inclusion of custom merge tags. - Added `gform_merge_tags_supported_input_types` JavaScript filter to allow the inclusion of specific input types for merge tags. - Added the `gform_pre_post_render` filter to GFFormDisplay::post_render_script() to abort the rendering process. - Fixed a bug that prevents the error icon from displaying in the validation summary in the Gravity Forms 2.5 Theme. - Fixed the padding of field validation messages in the Gravity Forms 2.5 Theme. - Fixed a bug that prevented notification CC and BCC fields from correctly handling comma-separated merge tags. - API: Updated the file upload field value in the draft entry from GFFormsModel::create_lead() to contain a JSON encoded array of file details instead of the incorrect file URL. - API: Updated the border color of disabled inputs in the Settings API. ### 2.8.5 | 2024-03-06 - Added security enhancements. - Fixed the `gform_required_legend` filter to that the `$form` parameter is passed correctly. - Fixed an issue that causes the Entry menu item to appear disabled when on an Entry screen. - Fixed an issue where importing a form with Next buttons causes an error. - Fixed an issue which causes empty column headers in entry exports for the address field latitude and longitude inputs added by the Geolocation Add-On. - Fixed an issue that prevents replacement of the field merge tag when the input ID includes alphanumeric characters like {Address (Latitude):1.geolocation_latitude}. - Updated the datepicker to fit on small screens. ### 2.8.4 | 2024-02-21 - Fixed an issue that causes fields like the signature field to not render correctly in hidden interfaces such as tabs or modals. - Fixed an issue where the merge tag dropdown in the product field shows the incorrect options. - Fixed an issue which causes the incorrect confirmation to display when deleting a "display only" field. - Fixed an issue that displays the Consent field description value in the {all_fields} merge tag. - Fixed the display of the name field tooltip in the form editor in Safari. - Fixed an issue where the post selector dropdown is not displaying for form confirmations using the Page confirmation type. - Updated the log files section of the system report to list older files that have been rotated out. - Updated File Upload field to display correct values on the form review page. ### 2.8.3 | 2024-02-01 - Added telemetry data points. - Fixed an issue where the honeypot was not working on forms using the Stripe Field with additional payment methods enabled. - Fixed an issue where under certain conditions, an error saying "undefined index 'page_instance'" is shown when rendering a form. - AF: Updated the Settings API so that form meta saved in a settings field save callback will not be lost. ### 2.8.2 | 2024-01-18 - Added security enhancements. - Fixed an issue where the datepicker does not work in the repeater field. - Fixed an issue that sometimes causes extra spacers to be added to forms. - Fixed an issue where conditional logic rules based on anything but the first choice of a radio or checkbox field do not work in forms created in Gravity Forms 2.8.1. Users will need to delete and re-create the conditional logic rules to fix the issue. - AF: Fixed an issue where the readonly attribute is not added to settings fields. ### 2.8.1 | 2024-01-04 - Added support for conditional logic rules based on Survey fields for confirmations, notifications, and feeds. - Fixed various warnings and notices in PHP 8.1 and 8.2. - Fixed an issue where address inputs are sometimes vertically mis-aligned in the Gravity Forms 2.5 theme. - Fixed display issues with the merge tag dropdown in Firefox. - Fixed the display of tooltips in the form editor in Safari. - Fixed an issue that prevents conditional logic from working on the submit button on multi-page forms if the last page is also hidden with conditional logic. - Fixed an issue that prevents the conditional logic UI from displaying on duplicates of the default confirmation. - Fixed an issue where it is difficult to access the field admin icons with the mouse in the form editor. - Fixed an issue where users without the `gravityforms_edit_entries` capability can mark entries as read/unread. - Fixed conditional logic on the product option field. - Updated the format of telemetry data. - AF: Added feed processing when entries are marked as "not spam". - Updated merge tag dropdown on number field to allow live preview before saving form. ### 2.8.0 | 2023-12-07 - Added a compact view to the form editor. - Added the default theme to the system report. - Added performance improvements by only enqueueing necessary styles on the front end. - Added support for field sidebar messages. - Added the `gform_display_disable_css_setting` filter to allow the display of the Output Default CSS setting. - Updated the telemetry background processor to log when it fails to send data. - Updated the field accordions in the form editor to all be open by default. - Updated the minimum WordPress version on the System Status page to 6.3. - Removed deprecated function `string.format()`. - Removed several unused images. - Removed the "Output Default CSS" setting from the settings page and replaced it with the [`gform_disable_css`](https://docs.gravityforms.com/gform_disable_css/) filter. - Removed the HTML5 setting from the settings page. - API: Removed the deprecated form Theme Framework global CSS API color system properties. - API: Updated and refactored the form Theme Framework CSS API to reduce stylesheet size for better performance. ### 2.7.17 | 2023-11-09 - Fixed an issue that prevents the post category selector from appearing correctly in WordPress 6.4. - Fixed an issue where multipage forms with conditional logic display the wrong text on the "next" button. ### 2.7.16 | 2023-10-25 - Updated the API endpoint for telemetry data. - Fixed a bug that causes values of checkbox fields to appear twice on the entry list page. - Fixed a bug that prevents form block style settings from being applied. - Fixed jQuery deprecation notices in the form preview for the following fields: email, product, total, and stripe fields, as well as some conditional logic. - Fixed "undefined index" errors that sometimes appear when a form is embedded with a shortcode. Credit: The GravityKit team. - AF: Updated the background processor to include additional logging statements around batch processing. - API: Added a new JavaScript action hook [gform_post_set_field_property](https://docs.gravityforms.com/gform_post_set_field_property/) in the form editor to listen for field property changes. ### 2.7.15 | 2023-10-05 - Added a new global setting to select the default form theme. On new sites, "Orbital" will be the default theme. - Added a 'theme' parameter to the Gravity Forms shortcode. - Added a new [`gform_default_styles`](https://docs.gravityforms.com/gform_default_styles/) filter to apply the same styles to all forms on a site. - Fixed an issue where the setup wizard saves an empty license key if the user clicks the "Skip" button. - Fixed an issue that causes fatal errors on some sites during the background processing of telemetry data. - Fixed an issue where feed settings for ActiveCampaign, Agile CRM, Breeze, Mailchimp, Trello, Twilio, and ZohoCRM display a deprecation warning when using PHP 8.1. - Updated the appearance of the template library. - Updated the name of "Gravity" theme to "Gravity Forms 2.5 Theme." - AF: Fixed the `Creation of dynamic property CLASS::$delayed_payment_integration is deprecated` notice with PHP 8.2. - AF: Fixed an issue where the background feed processor uses a stale instance of the add-on to process the feed preventing the {apc_media} merge tags from outputting values. ### 2.7.14 | 2023-09-19 - Added validation to name, post title, post body, single line text, paragraph text & address fields to prevent empty entries when fields are filled with text encoded with invalid charset for the database table. - Fixed an issue where editing an entry with a multifile upload field could result in broken links to files. - AF: Fixed the `strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated` notice that can occur with PHP 8.1 when getting a setting value. ### 2.7.13 | 2023-08-23 - Updated the minimum WordPress version on the System Status page to 6.2. - Updated product usage data so it is processed in the background. ### 2.7.12 | 2023-08-08 - Fixed a fatal error that occurs when a mapped setup_fee field is hidden by conditional logic. - AF: Added the [`$_min_compatible_gravityforms_version`](https://docs.gravityforms.com/gfaddon/#h-the-class-variables) property to the `GFFAddOn` class, enabling add-ons to specify the minimum Gravity Forms version that is compatible with all the add-on features. ### 2.7.11 | 2023-07-27 - Added a block theme setting for form input accent color. - Fixed an issue that causes JavaScript errors in the theme if certain script optimization plugins are used. - Fixed an issue where honeypot validation was failing on multipage forms if the last page was hidden by conditional logic. - Fixed an issue where printing an entry with the nested form field is causing a fatal error. - Fixed errors that occur when attempting to install translations on a WordPress filesystem that requires credentials. - Fixed the "no route found" error when performing an OPTIONS request to the REST API v2 endpoints. - Fixed an issue where license validation fails when using a non-standard license key. - API: Added support for an accent color for input styles for the theme framework. - API: Added a theme framework utility class of `.gform-theme__disable-reset` to disable theme framework reset styles. - API: Added a theme framework utility class of `.gform-theme__disable-framework` to disable theme framework styles. - API: Added a theme framework utility class of `.gform-theme__disable` to disable theme framework and reset styles. ### 2.7.10 | 2023-07-12 - Added security enhancements. - Fixed a PHP fatal error that occurs when the theme or another plugin sets an invalid property value on the $wp_filter global variable. - Fixed an issue for the Orbital theme where hidden inputs were receiving focus in Safari during keyboard navigation. - Fixed various deprecation notices in PHP 8.1. - Fixed the enhanced UI for select and multiselect fields to work within conversational forms. - Updated the Orbital theme to support max-height/scroll for the consent field. - Updated the thumbnail image in the template library for the eCommerce template. - Updated the name of the form block to "Form" to make it easier to find in the block inserter. ### 2.7.9 | 2023-06-22 - Fixed an issue where an empty Number type Quantity field fails validation with a decimals-related error message. - Fixed an issue where the custom validation message is not applied when a Number type Quantity field fails validation. - Fixed an issue where the first page of a form gets an incorrect data attribute. - Updated the Post Custom Field with List input type to look the same as the normal List field in the Orbital theme. - API: Fixed an issue in the color setting component where the selected indicator for custom colors can't be seen on light backgrounds. ### 2.7.8 | 2023-06-08 - Fixed a bug that prevents dynamic population from working in the block settings. ### 2.7.7 | 2023-05-25 - Added the ability to display error messages for Drop Downs and Textareas on form editor's field settings panel. - Fixed a bug that prevented HTML tags from using theme styles in the Orbital theme. - Updated how the form block is rendered so it no longer uses the shortcode. - Updated the entry list to support array values for custom entry meta. Credit: The Gravity Wiz team. ### 2.7.6 | 2023-05-10 - Fixed an issue where the HTML field filters out JavaScript. - Updated the handling of submit button conditional logic to add a data attribute indicating whether a button is hidden or not. - API: Added `gform/conditionalLogic/applyRules/start` and `gform/conditionalLogic/applyRules/end` JS event triggers for conditional logic to accommodate conversational forms. ### 2.7.5 | 2023-05-03 - Added security enhancements. - Fixed an issue where `GF_Field_Consent::is_value_submission_empty()` returns the wrong result when editable fields are validated during progress save on the Gravity Flow User Input step. - Fixed an issue where Conversational Forms with similar slug names to a post or page are not rendered. - Fixed an issue where turning off Legacy Markup with the `gform_enable_legacy_markup` filter results in a fatal error. - Updated the minimum WordPress version on the System Status page to 6.1. - Updated the location of our NPM packages. - Updated the theme framework reset to inherit site theme typographic styles for form confirmation html. - API: Added a new function `GFFormsModel::get_forms_columns()`` to get a list of specified form data. Credit: The GravityKit team. - API: Added "date_updated" to the list of form database columns. Credit: The GravityKit team. - API: Added the `gform_conditional_logic_is_valid_flyout_click` filter to allow third parties to designate valid conditional logic flyout clicks. Credit: Gravity Wiz. - API: Fixed a bug that prevents developers from overriding the button setting default values. Credit: The GravityKit team. ### 2.7.4 | 2023-04-11 - Added security enhancements. - Fixed an issue that causes block style settings to disappear on a form with validation errors. - Fixed PHP warnings on the time field in some versions of PHP. - Fixed an issue that blocks the Color Picker Input Border Styles from displaying. - Fixed an issue that prevents the honeypot from working if the last section of a form is hidden by conditional logic. - Fixed an issue that prevents new installations of Gravity Forms from showing up in the user account page on gravityforms.com. - Fixed an issue that causes incorrect "Upgrade" notifications on the form template library for some license types. - Updated the link for the "open a support ticket" text on the help page. - Updated the textarea in the new form dialog to prevent layout problems and unnecessary scrollbars. - Updated the new form dialog for better keyboard accessibility. - Updated how conditional logic is handled to add data attributes to hidden and visible fields. - API: Added new filter `gform_addon_form_settings_fields` to allow addons to modify the settings fields displayed on a given form settings page. - API: Added a new filter `gform_validate_required_file_exists` to allow developers to override the default behavior of the file upload field when validating required files. - AF: Fixed a fatal error that occurs when when saving settings that include a setting named "enable" when logging has not been configured for an add-on. ### 2.7.3 | 2023-03-15 - Fixed an issue that prevents accessing the settings page after failed license validation in the setup wizard. - Fixed an issue that prevents the template library stylesheet from loading in no-conflict mode and makes the template library unusable. - Fixed a compatibility issue with WordPress 6.2 where forms are not rendered properly in the Block Editor. - Fixed an issue where some CSS files are loading when the Output Default CSS setting is turned off. - Fixed an error on the widgets page that prevents the Gravity Forms block from working as a widget. - Fixed an issue which prevents sorting by number in the total field. - Fixed an issue that removes some inputs' sublabels when forms are saved. - Removed the about page images from the codebase to reduce the codebase size. - API: Added CSS API global custom properties for the contrast color for the theme framework's danger and success colors. - API: Added CSS API global custom properties to allow for specifying of the various max border-radius sizes we support. - API: Added CSS API global custom properties for the checkbox, date, file, select, and textarea border-radius property. - API: Fixed an issue where the Radio and Card settings fields do not render choice IDs. ### 2.7.2 | 2023-03-01 - Fixed an issue where some Gravity Forms CSS files load in the WordPress admin when they aren't needed. - Fixed an issue for sites hosted with WordPress.com where the “Enable auto-updates” spinner on the installed plugins page spins indefinitely. - Fixed an issue where the WP-CLI `wp plugin auto-updates` commands aren't compatible with the background updates setting. - Fixed deprecation notices in PHP 8.1. - API: Updated and simplified the form Theme Framework's global CSS API color system. - API: Deprecated some of the form Theme Framework's global CSS API color system. - API: Fixed the add/remove buttons on the generic field map field so that they always display horizontally. ### 2.7.1 | 2023-02-14 - Added "Date Updated" to the list of default exported entry values. Credit: The GravityKit team. - Updated the setup wizard to use a placeholder instead of default value of "blog" in the website type dropdown. - Updated entry saving to add a note to the entry when batch saving of field values fails. - Updated the template library to show the basic contact form before the advanced contact form. - Updated the form submission logging statements. - Updated the map link in the address field to open in https. - Updated the system report to list a few recently run scheduled events (cron jobs). - Updated the link and text on the reCAPTCHA button on the settings page. - Updated the form template library to account for wordpress.com license type. - Fixed an issue which prevents new forms from being saved if the title or description contain double quotes. - Fixed an issue where in a multisite installation the setup wizard is displayed for all sites even after it is completed in the main site. - Fixed an issue with the file upload field that allows for empty submissions of required multi-file upload fields. - Fixed database warnings when a site has forms added before 1.8. - Fixed a fatal error that occurs on front-end page load with MySQL versions between 5.7 and 5.7.8 and MariaDB versions up to 10.2.25. - Fixed an accessibility issue that causes an empty div instead of the error message to be focused on form submit when the form has validation errors. - Fixed an issue that causes the Simplebar JS library to load on the front end. - Fixed an accessibility issue that prevents the product quantity screen reader text from rendering on the front end. - Fixed the "for" attribute in checkbox inputs with more than 10 checkboxes in the repeater field. - Fixed display problems when using an extended consent field in the Orbital theme. - Fixed the password strength indicator in the default Gravity Theme to make it use colors to indicate password strength. - Fixed an issue where the user can't login with the password they entered during registration when background feed processing is enabled for the User Registration Add-On. - Fixed an issue that causes a required number input in a repeater to fail validation if the value is 0. - Fixed the filter 'gform_post_select_initial_count' not applying the passed value correctly. - Fixed an issue where the file upload field merge tag is returning the direct link to the file when used in the confirmation query string. - Fixed an accessibility issue with inline svg files inside focusable elements. - Fixed the warning that is thrown when creating a blank form. - Fixed an issue that causes confusing image tags in the copied system report. - Fixed an issue that prevents checkbox value modifiers from working when there are multiple modifiers. - Fixed an issue that causes the subtitle text on the about page to not be readable. - Fixed naming collisions with external JavaScript code by deprecating our custom String.prototype.format() function in favor of String.prototype.gformFormat(). - Removed unused images to downsize the image folder. - Removed the inaccurate site registration status item from the copied system report. - Removed an extra curly brace from the class-gf-field-name.php file. - AF: Fixed an issue with the settings hidden field that prevented custom css classes or custom id attributes from being specified in the field settings. - AF: Improved keyboard accessibility of the image radio and card settings field types. - AF: Improved form submission performance for sites with multiple payment add-ons active. - AF: Updated `GFFeedAddOn::maybe_process_feed()` to call `$this->delay_feed()` when the feed is added to the background processing queue. - API: Added the [gform_pre_process_async_notifications](https://docs.gravityforms.com/gform_pre_process_async_notifications/) and [gform_post_process_async_notifications](https://docs.gravityforms.com/gform_post_process_async_notifications/) hooks to the background notifications processor. - API: Added the [gform_search_criteria_entry_limit_validation](https://docs.gravityforms.com/gform_search_criteria_entry_limit_validation/) filter. - API: Fixed the "no route found" error when performing an OPTIONS request to the REST API v2 endpoints. - API: Fixed an issue where feeds can be created for forms that don't exist. - API: Fixed an issue where feeds couldn't be created for form ID 0, which is required for feeds that can be used by any form. - API: Fixed an issue where resetting one custom select field resets all custom select fields on the page. ### 2.7 | 2023-01-25 - Added an improved Setup Wizard. - Added the Orbital Form Theme, a theme with opinionated styles that is customizable in the block style settings. - Added form style settings to the Gravity Forms block to allow users to easily customize the appearance of their forms. - Added the Form Template Library to make it easier to create common forms. - Added new Honeypot functionality to increase spam protection. - Added a new Honeypot form setting to allow entries to be created and marked as spam when the Honeypot catches a form submission. - Added the ability to upgrade a license from the settings page. - Added performance improvements to form submissions for forms with lots of confirmations. - Added performance improvements to form rendering. - Added performance improvements to merge tag processing. Credit: The GravityKit team. - Added accessibility improvements to the system report page. - Added accessibility improvements to the Form, Entry and Feed List tables to improve accessibility. - Added "Gravity Forms" to the title of admin pages to improve accessibility. - Added underlines to links in the Form Validation Summary for better accessibility. - Added security enhancements. - Updated the repeater field markup to be compatible with the Theme Framework. - Updated the form submit spinner to use new Theme Framework styles. - Updated the image in the drag and drop instructions on an empty form. - Updated the form preview in the block editor to display the form if it has conditional logic. - Updated the default phone format option to be "International" instead of "US/Canada". - Fixed a fatal error that can occur in some hosting environments with PHP 8+. - Fixed an issue where form revisions are not created when a form contains a Consent field other than the Gravity Forms core Consent field. - Fixed a performance issue where the gform_layout_editor script is being localised outside the editor for a form that doesn't exist. Credit: The GravityKit team. - Fixed an issue where the Gravity Forms datepicker style is being applied outside of Gravity Forms. - API: Added a form Theme Framework and CSS API to make it easier to customize the appearance of forms. - API: Added a "block_editor" admin page type to allow add-ons to easily enqueue scripts and styles to the block editor via the scripts() and styles() methods. - API: Added [GFAPI::validate_field()](https://docs.gravityforms.com/validating-field-submissions-with-the-gfapi/) to validate the value of a specific field. - API: Added a new hook [`gform_entries_primary_column_filter`](https://docs.gravityforms.com/gform_entries_primary_column_filter) to filter the entry list table's first column. - API: Added a new filter [`gform_abort_submission_with_confirmation`](https://docs.gravityforms.com/gform_abort_submission_with_confirmation) that can be used to abort form submission and display a confirmation. - API: Added a new filter [`gform_search_criteria_export_entries`](https://docs.gravityforms.com/gform_search_criteria_export_entries) to allow entries of different statuses (i.e. trash, abuse) to be exported. ### 2.6.9 | 2023-01-11 - Added a new environment variable to hide the background updates setting. - Added a new environment variable to control the update message and the unregistered license message. - Updated the icon for the Password field. - Updated the minimum WordPress version on the System Status page to 6.0. - Fixed an issue where the editor jumps to the top of the form when opening the choices flyout in no-conflict mode. - Fixed an issue that causes hidden inputs to render in the autocomplete UI of the form editor. - Fixed an issue where exporting entries including multiple Multi-Column List fields would not create separate columns for each List field row. Credit: ForGravity. - Fixed an issue which causes products to display images as HTML in email notifications. - Fixed an issue where some admin notifications result in an error: "Cannot send email because the TO address is invalid". - Fixed an issue that causes the "Enable Other Choice" setting for option-based fields (Radio, Checkbox etc) to not display in the choices flyout when the Quiz add-on is enabled. - Fixed an issue where the `gform_require_login` filter isn't called in all contexts where login is required for the form. - API: Added the [gform_uninstalling](https://docs.gravityforms.com/gform_uninstalling/) action hook. - API: Added the [gform_form_pre_process_async_task](https://docs.gravityforms.com/gform_form_pre_process_async_task/) filter. - API: Updated the GFAPI::send_notifications() method to support async (background) processing of notifications. Disabled by default. Enable using the [gform_is_asynchronous_notifications_enabled](https://docs.gravityforms.com/gform_is_asynchronous_notifications_enabled/) filter. ### 2.6.8 | 2022-11-09 - Fixed an accessibility issue with the consent field description. - Fixed an accessibility issue that prevents the show/hide password button from read by screen readers. - Fixed an issue where editing an entry with a multifile upload field could result in broken links to files. Credit: Gravity Wiz - Removed an unused javascript function. ### 2.6.7 | 2022-09-21 - Added security enhancements. - Added support for environment options. - Fixed an issue where the product field description is not announced by screen readers when the quantity field is disabled. - Fixed an issue where the wrong change log can display on update. - Fixed an issue that can result in the database upgrade stalling with an error when updating from very old versions. - Updated how the predefined choices list for gender and the name prefix choices are generated to make them easier to translate. ### 2.6.6 | 2022-08-23 - Fixed an issue where the a form can have multiple submit buttons if markup is changed with the `gform_field_container` filter. - Updated the Zapier icon to reflect their new branding. ### 2.6.5 | 2022-08-09 - Fixed a fatal error that can occur on some hosting environments when the license is validated. - Fixed an issue where inserting a new notification routing rule will sometimes overwrite the following rule. - Fixed an issue which prevents some {today} merge tags from displaying the correct value. - Fixed an issue where the required field legend is not displayed if form title or description aren't enabled on a form that does not use legacy markup. - Fixed an issue which can cause code to run multiple times on some hosting environments, leading to warnings and fatal errors. - Fixed an issue where the default value of an email field with confirmation enabled does not display. - Updated predefined choices lists for countries, US states, marital status, and gender as well as name prefix choices to be up-to-date and more inclusive. - AF: Fixed a fatal error that can occur with PHP 8+ if an error occurs during background feed processing. - API: Fixed an issue where GF_Field_Time::is_value_submission_empty() can return the wrong result. ### 2.6.4 | 2022-07-06 - Added the [gform_cleanup_target_dir](https://docs.gravityforms.com/gform_cleanup_target_dir/) filter to support async uploads on servers with opendir() disabled. - Fixed an issue where the REST request to get additional pages fails on translated sites when configuring the form confirmation. - Fixed an accessibility issue by adding an alert role to the notice on the uninstall page. - Fixed an accessibility issue where the search field in the form detail has no connected label. - Fixed several PHP 8.1 deprecation notices. Note: There are still a number of notices from WordPress 6.0. - Updated the minimum WordPress version on the System Status page to 5.9. - Updated the database upgrade and System Status page to check for and fix auto increment issues which can cause "duplicate entry 0" errors. - AF: Updated `GFPaymentAddOn::maybe_validate()` to include `$context` as the second parameter. - API: Added gform/merge_tag/initialize event to allow merge tag drop downs to be manually initialized after page load. - API: Updated the REST API v2 [forms/[FORM_ID]/submissions](https://docs.gravityforms.com/submitting-forms-with-rest-api-v2/) endpoint to support the `?_validate_only=1` query argument. - API: Added [GFAPI::validate_form()](https://docs.gravityforms.com/validating-forms-with-the-gfapi/) to validate form field values without triggering other submission events such as saving the entry, sending notifications, add-on feeds, or confirmations. - API: Added the [forms/[FORM_ID]/submissions/validation](https://docs.gravityforms.com/validating-forms-with-rest-api-v2/) endpoint to REST API v2. - API: Updated the `gform_field_validation` and `gform_validation` filters to include a new `$context` parameter indicating how the current request was triggered: form-submit, api-submit, or api-validate. ### 2.6.3 | 2022-05-10 - Fixed bug that sometimes results in a fatal error when the license key is empty. ### 2.6.2 | 2022-05-05 - Added security enhancements. - Added performance improvements to the confirmation settings page for sites with lots of pages. - Added a performance improvement to the AJAX save process in the form editor that increases performance significantly, especially for forms that contain a large number of fields. - Added improvements to the message that appears when saving a form fails. - Fixed a bug that sometimes prevents entries from being updated. Credit: GravityView. - Fixed an issue where the forms list is not in alphabetical order. - Fixed a performance issue where queries are being run on admin pages that do not need them. - Fixed an issue where the submit button settings are reset to their default values when saving the form settings. - Fixed the "Allowed memory exhausted in gravityforms.php on line 147" fatal error that is impacting a small number of sites. - Fixed an issue with the license detail section displaying an inaccurate renewal date for certain licenses. - Fixed a few dozen PHP 8.1 deprecation notices. Note: WordPress won’t be compatible with PHP 8.1 until version 6.0 at the earliest, so there are still many notices from WP functions. - Fixed a bug that prevents users without form editing capabilities from exporting entries. - Fixed a bug that prevents editing the First Name and City sublabels. - Fixed a fatal error that occurs on plugin activation with WordPress 4.9 and earlier. - Fixed a bug that causes form editor settings panels to close when any button in the sidebar is clicked. - Fixed an issue where field values that contain non-Latin characters are not displayed correctly after AJAX save in the form editor. - API: Added the [gform_abort_conditional_logic_do_action](https://docs.gravityforms.com/gform_abort_conditional_logic_do_action/) javascript filter to allow add-ons to abort the conditional logic action before fields are displayed or hidden. - API: Added the [gform_embed_edit_post_link](https://docs.gravityforms.com/gform_embed_edit_post_link/) filter. - API: Added the [gform_rule_source_value](https://docs.gravityforms.com/gform_rule_source_value/) filter to allow the source value of a conditional logic rule to be filtered. ### 2.6.1 | 2022-03-24 - Added security enhancements. - Added a fallback save method if AJAX save fails. - Added the {today} merge tag to output the current date and/or time. Credit: The Gravity PDF team. - Fixed an issue where saving the form fails if the form contains any backslashes. - Fixed an issue where the save form button in the form editor is stuck in the saving state if form validation fails. - Fixed an issue where dropdowns in the Embed Form flyout are not correctly displaying their content. - Fixed several display issues in the form editor. - Fixed an issue where our IE11 admin stylesheet is being loaded everywhere in the admin. - Fixed some issues where text on the 2.6 splash page can't be translated. - Fixed an issue which causes admin pages to visually break when No Conflict mode is enabled. - Fixed the duplicated output of the core admin stylesheet for the add-on results screen. - Fixed the core admin stylesheet path for the help screen. - Updated the label styles for disabled radio and checkbox inputs to better indicate the option is disabled. - AF: Added ability to specify and use custom font icon with the addition of GFAddOn::get_icon_namespace(). - AF: Added additional support for Font Awesome icon styles for GFCommon::get_icon_markup(). - AF: Fixed an issue where payment fails when using Japanese Yen with the Stripe Card field and Stripe Add-On v4.2. - API: Added ability to specify custom font icon namespace for GFCommon::get_icon_markup(). - API: Updated the $form_ids arg of GFAPI:get_feeds() to support an array of IDs. Credit: The GravityView team. - API: Fixed an issue where RGCurrency::to_number() returns a float instead of an integer for zero-decimal currencies. - API: Fixed an issue that causes Live Dependency fields with custom display properties to render incorrectly. Credit: The ForGravity team. ### 2.6 | 2022-03-14 - Added the embed flyout to easily embed forms into a post or page directly from the form editor. - Added the submit button to the form editor instead of the form settings page, with new settings to display it inline. - Added the choices flyout to provide more space for editing field choices in the form editor. - Added enhancements to the form editor so that it saves without reloading the page. - Added enhancements to the submission process to further reduce the risk of duplicate entries. - Added a notice in the form editor for forms that have legacy markup enabled. - Added a splash page to tell users about new features. - Added enhancements to the design of the form editor. - Added a loading indicator to settings pages to improve usability. - Added accessibility enhancements to the product field. - Added accessibility enhancements to the time field to ensure that the AM/PM selector has a label. - Added accessibility enhancements to the list field so that the aria labels for new rows match column headers. - Added performance enhancements to speed the loading of entries with encrypted fields. - Added performance enhancements to long forms with conditional logic. - Updated how notes are displayed on the entry detail page so that HTML is no longer completely removed. - Updated the styling of the order summary table in the entry detail page. - Updated the minimum WordPress version on the System Status page to 5.8. - Fixed an issue where conditional logic is not duplicated when a confirmation is duplicated. - Fixed an issue where vertical alignment can be incorrect in complex fields if some inputs don't have sub-labels. - Fixed an issue that prevented the date picker icon from displaying on settings pages. - Fixed an issue that causes the address field inputs to be misaligned when hiding sub-fields. - Fixed an issue where checkboxes without labels are checked by default. - Fixed a fatal error with PHP 8 when editing an entry that includes an empty date drop-down field. - Fixed an issue with the license validation request that can result in too many sites being counted towards a license's site limit in certain situations. - Fixed an issue where setting the time field sub-label placement to hidden does not hide the sub-labels. - Fixed an issue with the address field where the zip code autocomplete attribute does not appear if the sub-labels are above the inputs. - Fixed an issue where the next, previous, and submit buttons are not showing the pointer cursor when hovering over them. - Fixed an issue where the show country field setting for the address field is not being respected in the form editor. - Fixed an issue where license validation is being performed too many times when license key is left blank. - Fixed an issue where the all_fields merge tag renders the radio choice value instead of choice label when the value is 0. - AF: Fixed an issue where the trial discount or a custom trial amount does not appear in the order summary. - API: Fixed an issue with the "select" settings field where empty option groups are being rendered as selectable options. - API: Added admin component for popup notifications throughout the UI. - API: Added the ability to remove the merge tags ui from rich text fields in the Settings API. - API: Added the ability to use Gravity Forms JavaScript components anywhere in the admin. - API: Added the [gform_settings_display_license_details](https://docs.gravityforms.com/gform_settings_display_license_details/) filter to hide the license details on the settings page. - API: Added the [gform_plugin_settings_fields](https://docs.gravityforms.com/gform_plugin_settings_fields/) filter. - API: Added the [gform_field_filter_from_post](https://docs.gravityforms.com/gform_field_filter_from_post/) filter to allow filter settings for the form fields, entry properties, and entry meta used in conditional logic for entry export, entry list, results pages, and some add-on to be overridden when the filters are being processed. Complements the *[gform_field_filters](https://docs.gravityforms.com/gform_field_filters/)* filter. - API: Fixed an issue where the form editor tooltip is rendering CSS classes incorrectly. - API: Fixed an issue which causes some file uploads to fail when chunking is enabled. ### 2.5.16 | 2022-01-11 - Fixed an issue where the select entry table columns in RTL are not displaying properly. - Fixed an issue where the credit card field expiration date fieldset label is not output as legend. - Fixed an issue where a PHP warning appears in the logs after running the daily cron. - Fixed an issue with total field not displaying correct amount under certain conditions. - Fixed an issue where the validation div on the legacy file uploads field is showing when empty. - Fixed an issue with gform_conditional_logic_operators filter passing the incorrect field ID. - Fixed an issue which causes multisites to experience a fatal error on plugin activation. - Fixed an issue with Dynamic Field Map on some add-ons including HubSpot Add-On and User Registration Add-On. - Fixed an issue with form import not properly sanitizing JSON string in some cases. - Fixed an issue where uploaded files are not deleted on entry deletion if a custom upload path is used. - Fixed an issue with Generic Map and Dynamic Field Map not being able to filter the value drop down to include or exclude field types. - Fixed an issue with Generic Map settings field not being able to specify a custom list of choices for mapping. - Fixed an issue where files uploaded via the multi-file upload field are corrupted when chunking is enabled using [gform_plupload_settings](https://docs.gravityforms.com/gform_plupload_settings/). - Fixed performance issue with Generic Map settings field. - Fixed fatal error in Generic Map settings field that can happen under certain conditions. ### 2.5.15 | 2021-11-16 - Added a prefix to section IDs in the Settings API to make it less likely that sections and fields will have the same ID. - Added new filter: *[gform_get_form_confirmation_filter](https://docs.gravityforms.com/gform_get_form_confirmation_filter/)* - Fixed an issue that prevents keyboard navigation from working in a form with multi-file upload and page fields. - Fixed an issue that caused Javascript errors when a form is added to the page via a custom Gutenberg block such as ACF. - Fixed an issue that caused sales results filters to show up on quiz, survey, and polls results pages. - Fixed an issue where aria-labels for name field inputs are incorrect by removing aria-labels from fieldset inputs. - Fixed an issue with conditional logic when targeting checkbox fields and using "is not empty" as a rule. - Updated invisible CAPTCHA processing to reduce chances of multiple submit button clicks generating duplicate submissions. ### 2.5.14 | 2021-10-21 - Fixed an issue which causes No Conflict mode to break Media Uploads for some WYSIWYG editors. - Reverted required indicator for hidden labels change made in 2.5.13 which introduced UI issues. ### 2.5.13 | 2021-10-19 - Added security enhancements. - Added support for Visibility settings for the HTML Field. - Fixed an issue where the required indicator is not displayed if the field label is hidden. - Fixed a PHP notice on the WordPress 5.8+ Appearance > Widgets page. - Fixed an issue with the Radio Buttons field on the entry detail edit page where the other input is disabled resulting in the loss of the other value on entry update. - Fixed an issue that caused fields with float values for IDs to break the conditional logic flyout modal. - Fixed the display of left-aligned labels in order to allow them to stack on smaller screen sizes. - Fixed an issue with the sales page displaying duplicate months when viewed on the last days of the month. - Fixed an issue where the form switcher redirects the user to the entries list page instead of the results page. - Fixed an issue where the tooltip for a date/time settings field does not display correctly. - Fixed an issue that causes Unit Tests to fail to output any feedback due to output buffering. - Fixed two instances of an incorrect text domain for translatable strings. - API: Fixed issues in the Settings API that prevents dependencies from working on nested fields and sections without IDs. ### 2.5.12 | 2021-10-01 - Fixed an issue with the address field merge tag when selecting the option to use the values from a previous address field - Fixed an issue for the list field where multi-column headers are misaligned when max rows are set to 1. - Fixed an issue which causes calls to the License API to occur more often than necessary. ### 2.5.11 | 2021-09-29 - Added security enhancements. - Added a new UI for License Settings which shows more-thorough details about your License Key. - Updated logo to reflect new branding. - Fixed an issue which causes compatibility errors when third-party code extends the Gravity API class. - Fixed a PHP fatal error that occurs during translation installation when the hosting environment is configured to block external requests. - Fixed an issue for thickbox where RTL is not being respected, but only within the context of Gravity Forms admin pages. - API: Updated the logic that determines when to show custom form settings fields. ### 2.5.10 | 2021-09-08 - Added alt text and title attribute for accessibility to the date field datepicker field icon. - Fixed an issue where the form button text doesn't properly update for page conditional logic. - Fixed an issue where forms with pricing fields throw PHP notices if fields are removed before the form is rendered. - Fixed an issue with our block script loading that breaks the Gutenberg editor in WordPress 5.8.x and up. - Fixed an issue that causes some screens in the admin to have JavaScript errors in WordPress versions previous to 5.0. - Fixed an issue which causes field calculations with references to the calculated field to infinitely loop. - Fixed an issue that causes the Form Switcher to break on certain Admin views. - Fixed an issue which causes fields with multiple inputs to have incorrect aria-validate attributes. - Fixed an issue for the conditional flyout logic where checkbox and radio field based conditionals are not being respected. - Fixed an issue which causes fields with whitespace to break certain Add-on Feeds. - Fixed an issue where the border for the section field type is missing for the frontend form display when legacy markup mode is not enabled. - Fixed an issue for the generic map settings field not rendering when editing an existing feed where the setting was previously configured. - Fixed an issue that causes gfCalc events to be bound to the same listener multiple times. - Updated the reCAPTCHA settings link for the Captcha field "To use the reCAPTCHA field" message in the form editor. - Updated the UI of the update button in the form editor. - Updated the feed settings to run on admin_init instead of init to ensure they never trigger on the front end. - Updated some instances of strings not being translatable for the System Status view. - API: Fixed an issue where field map fields don't auto populate with default options. - AF: Added the ability to overwrite the uninstall message. ### 2.5.9 | 2021-08-10 - Added security enhancements. - Fixed an issue where the header of the datepicker in legacy forms has the wrong background color and the dropdowns are not aligned correctly. - Fixed an issue where "This field is required" appears twice in the time field validation message. - Fixed an issue in the submission time performance for hosting environments where the form has lots of directories in its uploads folder. - Fixed an issue when submitting form in form preview where the required JS hooks are not being included. - AF: Fixed a display issue with poll results where the text gets cut off if labels are long. - AF: Fixed the display of visual radio choices in settings. - AF: Fixed an issue for get_icon_markup where all style implementations of font awesome are getting an additional class of "fa" prefixed to the output icon classes. - AF: Fixed an issue with dynamic field map settings fields that prevents options from appearing in the value dropdown. ### 2.5.8 | 2021-07-28 - Fixed an issue for inputs where Gravity Form styles are overriding and breaking WordPress admin styles for certain inputs, textareas, and selects. - Fixed an issue of incorrect styles for the tel input type when in the entry edit view. - Fixed an issue that causes invalid markup in Field Descriptions to break the Form Editor. - Fixed an in which javascript can be injected on pages which don't support it and cause console errors. - Fixed an issue that affected the performance of the forms and entries list pages. - Fixed an issue with the display of the datepicker field in 2021 theme. - Fixed an issue that causes rich text fields not render correctly in some cases in the WordPress admin. - Fixed an issue that causes some languages to not display correctly in the tab ui of the form editor. - Fixed an issue which causes datepickers in the form preview window to not respect the week starts on setting in WordPress. - Fixed an issue that causes long labels for form fields to cause the conditional logic rules in settings area to exceed the width of their column. - Fixed an issue where the personal data cron does not trash or delete entries for inactive forms. - Fixed an issue which causes Next Button Conditional Logic rules to break in some situations. - Fixed an issue where the columns of the list field are not aligned with the inputs when the legacy setting is on. - Fixed an issue which causes databases with an "int_" prefix to break upgrade routines. - Fixed an issue with form settings field map field where the first field with required input types with only one option present is not saving the value, resulting in an error for required fields. - Fixed an issue where the required indicator can be displayed for the consent field in the form editor when the field is not required. - Fixed an issue in form editor field settings where field errors and notices are not reset and updated correctly as you edit different fields. - Fixed a bug which causes some systems to throw a fatal error when updating to 2.5.7.x. - Fixed a bug which causes forms with text-only fields to break the Form Editor which was introduced in 2.5.7.2 - Fixed a bug which causes AJAX forms to inject Hooks JS markup and break the redirect script. - Fixed a bug which causes programmatically-created forms to throw PHP warnings if specific values are ommitted. - Fixed a bug in the settings field map field that prevents it from honoring input type arguments. - Fixed a PHP error in the field select field. - Fixed a layout bug for the list field in the form entry editing view when a form has legacy mode enabled. - Updated conditional logic for submit button to hide it visually when it is disabled. - Updated form editor and form settings alerts to reflect the new alerts styling. - Updated front end scripts to allow for filtering of their tags in WordPress 5.7 and up. - Updated the file upload field in order to support mapping its values to User Meta. - Updated error messages for File Uploads to be translatable. - API: Added a new alert component; currently only used in the admin. - API: Added new function GFCommon::get_inline_script_tag() which allows filtering of our theme inline scripts in WordPress 5.7 and up with the 'wp_inline_script_attributes' filter. ### 2.5.7 | 2021-07-07 - Fixed an issue that sometimes causes notice level warnings on widget enabled pages. - Fixed an issue that causes the file upload field to have empty rows remain after a file is deleted during editing the entry. - Fixed an issue where a notice appears on the feed details page. - Fixed an issue for multi-page forms where all fields regardless of current page incorrectly validate on each page submittal. - Fixed an issue that causes the form switcher to not load on the entry list screen when no conflict mode is enabled. - Fixed an issue that causes initial values in Conditional Logic not to be saved when the form is updated. - Fixed a layout/display issue for legacy forms in Safari when using the .gf_list_inline ready class for checkbox or radio fields. - Fixed a PHP warning which can occur when determining if the form has page conditional logic. - Fixed a PHP notice (error in PHP8) and display issue for the date field type when using the datefield or datedropdown input types when the field inputs are missing from the form object. - Fixed an issue for AJAX forms on submission where if the form cannot be found the submission stalls. - Fixed an issue that causes the Gravity Forms block to not load in WordPress 5.8. - Updated sticky notifications to allow them to be translatable when the user changes their language. - Updated the form switcher to size dynamically to better handle forms with long titles. - Updated block settings icons in various themes and contexts. - AF: Fixed an issue that can potentially cause the add-on uninstallation screen to throw a fatal error if the add-on class does not define a `get_instance` method. - API: Added the card field type in the settings API. - API: Fixed an issue which causes valid markup to throw an error when saving a textarea settings field. ### 2.5.6 | 2021-06-22 - Fixed an issue where dynamically populated choices for choice-based fields cannot be used in conditional logic. - Fixed an issue with the gf_list_inline ready class for radio and checkbox fields where the labels are wrapping. - Fixed an issue that causes choice values that are numbers to remain unselected when attempting to use them in conditional logic. - Fixed an issue with the total field that causes conditional logic based on its value to no longer work. - Fixed an issue with the reCAPTCHA field not rendering when a form is injected by ajax. - Fixed an issue with radio and checkbox fields for non-legacy forms where the field count and meta are missing styles. - Fixed an issue that prevents legacy settings from displaying on the form notification settings page. - Fixed an issue for forms not outputting HTML5 where the hour and minute input's layout breaks in the time field for browsers other than Firefox. - Fixed display issues for the time field when using legacy markup where the field's inputs aren't always the same height and placeholder text is cut off. - Fixed an issue where the default value field option does not work when the choice text is entered instead of the choice value. - Fixed a typo in the message that displays when logging is enabled. - Fixed issues where translations are not always offered or installed by WordPress and the WP-CLI. - Fixed the form scheduling settings so that the correct start and end minutes show as selected. - Fixed label layout issues when using left or right label alignment for a form. - Fixed the display of the time field for forms in legacy mode. - Fixed an issue when disabling logging via the link in the warning where the logging setting is not being unchecked. - Fixed an issue with the form editor that makes dragging items below the bottom of the screen difficult. - Fixed an issue where the layout of forms with left or right aligned labels is broken in the form editor. - Fixed an issue where the total field is not calculated for all forms if a page has more than one form. - Fixed an issue where the conditional logic choice based rules fail if the choice is renamed from the default. - Updated the submit button on the edit entry detail page to have the primary button styles for better visual prompting. - Updated the form editor to include the css for legacy ready classes on legacy enabled forms. - Updated field labels to show the same error style as field legends when they fail validation. - Updated the System Report to include the Translations section, listing the current site and user locales and installed translations. - Updated several form settings text areas to accept valid HTML for users with the unfiltered_html capability. - Updated the logging warning verbiage for clarity. - Updated translations to respect user-specific locale. - Updated various elements in the form editor to use stylized scrollbars that unify the ui experience across browsers. - Updated more icon styles. - Removed the notice for suppressed admin notices. - AF: Fixed an issue that prevents settings from displaying on the form settings screen when add-ons have the $_multiple_feeds property set to false. - AF: Fixed the timing for when feed settings are initialized so the process always occurs before admin scripts are enqueued, thereby preventing some JavaScript console errors from surfacing. - API: Fixed the display of tooltips next to settings section titles. - API: Fixed an issue where the merge tag drop down is not displayed next to the value field of the generic map feed settings field. - API: Fixed an issue where the dynamic field map doesn't accept empty values when saving a feed. ### 2.5.5 | 2021-06-02 - Fixed the appearance of Date, List and Time fields when editing an entry. - Fixed an issue where price total calculations do not work or becomes unresponsive when legacy form markup is enabled. - Fixed an issue where the submit button's value is "Next" instead of "Submit" on the last page after evaluating page fields' conditional logic. - Fixed an issue which can break AMP pages generated by some AMP plugins. - Fixed an issue which causes conflicts with XML Sitemaps and REST API Requests. - Fixed an issue where the form block toolbar links do not point to the right path when WordPress is not a top level directory. - Fixed an issue where text-based survey fields cause errors in the form editor. - Fixed an issue where Beaver Builder shows an error when embedding a form. - Fixed an issue with the reCAPTCHA field not rendering when in a multi page form with AJAX enabled. - Fixed an issue with the timing of loaded events in JavaScript which causes some forms to not render correctly or have console errors. - Fixed an issue where the add and remove choice buttons are hidden when modifying Prefix choices on a Name field. - Fixed an issue where the number of items in the Entry and Form lists are not be displayed when there is only one page of items. - Fixed an issue where the password strength is not be preserved after a failed submission or when not on the last page of a form. - API: Fixed an issue where the Dynamic Field Map Settings API field allows for custom values. ### 2.5.4 | 2021-05-27 - Added the gform_force_hooks_js_output filter to allow plugins to control whether to output the hooks js in the head; defaults to true. - Fixed an issue which causes reCaptcha field to log errors when there are none. - Fixed an issue which causes forms that rely on Javascript to not render in certain contexts. - Fixed an issue which causes Javascript markup to be injected into some AJAX responses. ### 2.5.3 | 2021-05-26 - Added accessibility warnings to the datepicker and fields with hidden labels in the form editor. - Added enhanced support for plugins that concatenate scripts. - Added support for translations for all strings in the file upload field. - Fixed gf_hidden class to also apply to non legacy forms for backwards compatibility. - Fixed an issue where JavaScript errors which prevent form display when jQuery is included in the footer or deferred. - Fixed an issue which can prevent forms functioning when included by ajax after the page has loaded. - Fixed an issue which causes forms to become non-responsive when Total Field calculations are being performed. - Fixed an issue where the total field HTML does not keep the legacy markup when legacy markup is enabled for a form. - Fixed an issue with the choices ui that breaks its layout when more than 2 input columns are inserted. - Fixed an issue in JavaScript that causes errors with price calculation. - Fixed an issue that causes some add-ons to be unable to load the feed settings screen. - Fixed an issue which causes some forms to throw JavaScript errors due to missing head tag in the DOM. - Fixed an issue which causes JavaScript events not to fire when a form is loaded via AJAX. - Fixed an issue which causes some performance optimization plugins to break certain form JavaScript methods. - Fixed an issue where the gf_list_*col ready classes for radio and checkbox fields are showing the wrong number of columns. - Fixed an issue that causes sites with HTML5 disabled to have it enabled after updating to 2.5. - Fixed an issue which allows greater-than and less-than operators for Conditional Logic to be more useful. - Fixed an issue which causes custom values in the Conditional Logic flyout in the form editor to be overwritten. - Fixed an issue where confirmations redirect to the selected page even if page isn't selected as the redirect type. - Fixed an issue where a JavaScript errors on the last page of a paginated form with conditional logic. - Fixed an issue which prevents setting custom classes for the form editor fields' buttons. - API: Updated the settings API to automatically save custom form settings fields added with the gform_form_settings_fields filter. - API: Fixed an issue which causes some filters not to fire when on certain Admin screens. ### 2.5.2 | 2021-05-19 - Added security enhancements. - Added form editor sidebar settings style refinements. - Updated the section field so it no longer uses the description as a fallback when the label is empty. - Updated the frontend styles for better column alignment and better appearance in small containers. - Updated the section field so it no longer uses the description as a fallback when the label is empty. - Fixed an issue where the HTML field's content setting doesn't have a merge tags selector. - Fixed an issue which causes Javascript errors in the Form Editor when no Conditional Logic fields are present. - Fixed an issue which causes Conditional Logic to fail if the first choice for a given field is selected. - Fixed an issue that prevents users with unfiltered_html capabilities from saving raw markup in textarea settings. - Fixed an issue that prevents choice-based fields from utilizing the contains, starts with, and ends with Conditional Operators. - Fixed an issue which causes validation error messages in forms with legacy markup to use the incorrect classname. - AF: Fixed an issue which prevents payment add-ons from rendering delayed payment settings in the feed settings page. ### 2.5.1 | 2021-05-11 - Added accessibility enhancements to the form editor to improve keyboard navigation. - Updated the form editor to notify users that resizing is not available when the legacy markup form setting is enabled. - Updated form editor to not allow resizing of fields when the legacy markup form setting is enabled. - Fixed an accessibility issue with the multi-file upload field. - Fixed an issue where the form description field doesn't allow HTML tags. - Fixed an issue where save and continue button is triggered when pressing return/enter. - Fixed a PHP notice that appears for the From Email for form notifications under certain circumstances. - Updated the save and continue button so that it isn't triggered when pressing return/enter. - Updated the form description field to allow HTML tags. - Updated icons in the WordPress admin to Gravity Forms 2.5 variants. - AF: Updated the setup fee settings in the payment add-on framework so that the product field is disabled instead of hidden if setup fee isn't checked. - AF: Fixed PHP notices that appear when editing a feed that has no associated form. - Fixed accessibility issue with the multi file upload field. - Fixed a PHP notice that appeared for the From Email for form notifications under certain circumstances. - Fixed a padding issue for suppressed WP notices in the admin area at smaller viewport sizes and refined notification vertical spacing. - Fixed an issue that causes single line text inputs added to a legacy mode editor instance to have size medium applied. - Fixed an issue that can cause dragging or resizing in the form editor to break the layout and/or delete the field. - Fixed issue when using a custom tab index and the post image field with all meta fields enabled where the alt text and post image shared the same tabindex. Credit: Jake Jackson (@jakejackson1). - Fixed an issue that causes radio and select fields to show invalid Conditional Logic options. - Fixed form editor layout issues present with Jetpack plugin on wordpress.com sites. - API: Fixed an issue which causes programmatically-created forms to break in the form editor. ### 2.5.0.2 - Fixed an issue which prevents certain add-ons from displaying Plugin Settings fields. - Fixed an issue which prevents non-admin users from accessing Form Settings when no add-ons are enabled. - Fixed an issue that causes certain fields to not trigger the settings tab to open in the form editor. - Fixed an issue that causes the page break end settings to not be visible in the form editor. - API: Fixed an issue with GFCommon::is_numeric() to allow non-currency based numbers without a leading zero. Credit: The GravityView Team. - API: Fixed an issue which causes programmatically-created forms to break in the form editor. - AF: Updated the setup fee settings in the payment add-on framework so that the product field is disabled instead of hidden if setup fee isn't checked. - AF: Fixed PHP notices that appear when editing a feed that has no associated form. ### 2.5 | 2021-04-27 - Added security enhancements. - Added support for dragging and dropping fields into columns in the form editor. - Added a completely new and more modern design for all the admin pages. - Added a completely new UX/UI for the form editor that's more inline with other areas of WordPress. - Added drag and drop support to the form editor for touch devices. - Added completely new styles and markup for forms to make them easier to style and more accessible. Existing forms use the legacy markup and styles by default. Disable the legacy markup in the form settings. - Added warnings in the form editor and form settings when a setting may affect the accessibility of the form. - Added support for ready classes in the form editor so the effects of ready classes are visible immediately. Column ready classes will continue to work in the frontend but they are deprecated and will not be supported in the form editor. - Added messages in the form editor when new forms use deprecated ready classes. Column ready classes have been deprecated, please use the columns in the form editor instead. - Added support for TranslationsPress to manage translations for Gravity Forms core and add-ons. Translation files will be delivered via the WordPress translation updates system. - Added the 'novalidate' attribute to the form container to block default HTML5 validation. This allows Gravity Forms to provide an accessible validation message. - Added accessible descriptions to fieldsets by making descriptions announced on the fieldset's first input. - Added accessible error messages to fieldsets by making error message specify which inputs are empty. - Added the required attribute to required inputs in form settings to improve accessibility. - Added accessibility enhancements to the credit card field and the Post Custom Field. - Added accessibility enhancements for the Post Tags field. - Added alternative text to the Post Image field. - Added the accessibility warning when "Enhanced User Interface" is enabled. - Added a fall back for an empty label for better accessibility. The placeholder or description can be used as label text when no field label is set. - Added a form setting to control the display of a validation summary at the top of the form for greater accessibility where appropriate. Each validation error links to the respective field. - Added a form setting to control the required field indicator. The default is set to the word "Required" for better accessibility. - Added a message to the top of the form to explain the meaning of the required fields indicator. This is not displayed when the indicator is set to "Required". - Added the autocomplete field settings to the following fields: Single-Line Text, Drop-Down, Number, Name, Phone, Address, Email. Further details: https://docs.gravityforms.com/accessibility-for-developers/#autocomplete - Added a display mode screen option to set the container width on the entry list. - Added the {created_by} merge tag to display information about the user who created the entry. Credit: the team at Gravity PDF. - Added the {date_created} merge tag to display the date an entry was created. Credit: the team at Gravity PDF. - Added the {date_updated} merge tag to display the date an entry was last updated. Formatted using the same modifiers as {date_created}. Credit: the team at Gravity PDF. - Added the {payment_date} merge tag to display the date the payment was received. Formatted using the same modifiers as {date_created}. Credit: the team at Gravity PDF. - Added an admin notice which appears when there are admin notices from other plugins. No more admin notice clutter! - Added the gform_selectwoo script to the list of no conflict scripts. Credit: the team at Gravity PDF. - Added the [gform_has_admin_notices](https://docs.gravityforms.com/gform_has_admin_notices/) filter. - Added the [gform_load_bulk_choices_choice](https://docs.gravityforms.com/gform_load_bulk_choices_choice/) and [gform_insert_bulk_choices_choice](https://docs.gravityforms.com/gform_insert_bulk_choices_choice/) filters. - Added the [gform_disable_form_legacy_css](https://docs.gravityforms.com/gform_disable_form_legacy_css/) filter to disable legacy CSS files. - Added the [gform_disable_form_theme_css](https://docs.gravityforms.com/gform_disable_form_theme_css/) filter to allow users to keep the Form Theme CSS file from being enqueued. - Added the [gform_enable_legacy_markup](https://docs.gravityforms.com/gform_enable_legacy_markup/) filter so the legacy markup setting can be overridden. - Added the [gform_preview_form_link](https://docs.gravityforms.com/gform_preview_form_link/) filter for customizing the form preview link. - Added the [gform_field_map_choices](https://docs.gravityforms.com/gform_field_map_choices/) filter for overriding the choices in field mapping drop downs. - Added the [gform_form_settings_initial_values](https://docs.gravityforms.com/gform_form_settings_initial_values/) filter enabling the default setting values for the Form Settings page to be customized. - Added the [gform_preview_init](https://docs.gravityforms.com/gform_preview_init/) action hook which is triggered when the form preview is loading. - Added the [gform_pre_print_scripts](https://docs.gravityforms.com/gform_pre_print_scripts/) and [gform_print_scripts](https://docs.gravityforms.com/gform_print_scripts/) action hooks which are triggered when printing scripts and styles for the form widget. - Added the [gform_editor_field_settings](https://docs.gravityforms.com/gform_editor_field_settings/) filter to allow the available field settings to be modified in the form editor. - Added the [gform_form_validation_errors](https://docs.gravityforms.com/gform_form_validation_errors/) filter enabling the list of field validation errors to be overridden. - Added the [gform_form_validation_errors_markup](https://docs.gravityforms.com/gform_form_validation_errors_markup/) filter enabling the HTML for the field validation errors list to be overridden. - Added the [gform_confirmation_settings_fields](https://docs.gravityforms.com/gform_confirmation_settings_fields/) filter to modify confirmation settings fields to replace deprecated gform_confirmation_ui_settings filter. - Added the [gform_editor_sidebar_panels](https://docs.gravityforms.com/gform_editor_sidebar_panels/) filter and [gform_editor_sidebar_panel_content](https://docs.gravityforms.com/gform_editor_sidebar_panel_content/) action to add custom panels to the form editor sidebar. - Added the [gform_field_settings_tabs](https://docs.gravityforms.com/gform_field_settings_tabs/) filter and [gform_field_settings_tab_content](https://docs.gravityforms.com/gform_field_settings_tab_content/) action to add custom field settings tabs. - Added the [gform_form_settings_fields](https://docs.gravityforms.com/gform_form_settings_fields/) filter to modify form settings fields to replace the deprecated gform_form_settings filter. - Added the [gform_notification_settings_fields](https://docs.gravityforms.com/gform_notification_settings_fields/) filter to modify form settings fields to replace deprecated gform_notification_ui_settings filter. - Added the [gform_frontend_pages_evaluated](https://docs.gravityforms.com/gform_frontend_pages_evaluated/) javascript action fires after the page conditional logic on the form has been evaluated, allowing further actions to be performed. - Added the [gform_frontend_page_visible](https://docs.gravityforms.com/gform_frontend_page_visible/) javascript action fires after a page step turns visible, allowing further actions to be performed. - Added the [gform_frontend_page_hidden](https://docs.gravityforms.com/gform_frontend_page_hidden/) javascript action fires after a page step turns hidden, allowing further actions to be performed. - Added the [gform_required_legend](https://docs.gravityforms.com/gform_required_legend/) filter to customize the required field indicator notice. - Added $tab_id as the second parameter to the [gform_field_settings_tab_content](https://docs.gravityforms.com/gform_field_settings_tab_content/) filter. - Updated the validation message for invalid email addresses with more specific instructions to comply with accessibility guidelines. - Updated honeypot field to use "new-password" instead of "off" as value for autocomplete field. - Updated the date field to display date format as the placeholder. - Updated the Single Product Quantity Field to provide better Screen Reader feedback. - Updated the HTML Field's "Disable Default Margins" setting to only display when form labels are set to left-or-right-aligned. - Updated the output of the Shipping and Total fields to be more accessible to screen readers. - Updated the required indicator in the settings pages to improve accessibility. - Updated the consent field to use fieldset container for better accessibility. - Updated the uninstall tab to allow for uninstalling all add-ons. - Updated the title of the dashboard widget. - Updated the way translations files are distributed. They are now downloaded on demand. - Updated the database schema to accommodate IPV6 addresses - Updated the Checkbox field to use a button element for Select All toggle forbetter accessibilty. - Updated the HTML heading structure to improve accessibility. - Updated multi-input fields to use the fieldset tag to improve accessibility. - Updated the markup to help screen readers announce the confirmation message when the form is embedded with AJAX. This helps to improve accessibility. - Updated the Calculation field to announce the updated price. - Updated the Post image field to display the allowed file extensions to improve accessibility. - Updated the File Upload field to display the allowed files extensions, the maximum number of allowed fields, and maximum file sizes. This helps to improve accessibility. - Updated the delete file button in the File Upload field to a trash button. It is now a button element instead of an image. This helps to improve accessibility. - Updated the Time field to provide the required format as a placeholder. - Updated the progress bar and submit button to react more appropriately to conditional logic. - Removed support for IE11 in the admin pages. IE11 is still supported in the frontend. - Fixed the system report to get the correct version of MariaDB and show whether the site is using MySQL or MariaDB. - Fixed an issue with the accessibility of the character counter on text fields with max characters. - Fixed some accessibility issues with tooltips in the settings. - Fixed a deprecation notice with PHP 7.2+ which occurs when using the Captcha field and the reCAPTCHA keys are not configured. Credit: The Gravity PDF team. - Fixed an issue with column widths for MySQL 8.0.17+. - Fixed some strings to be translatable. - API: Added the "defer" attribute to all scripts. - API: Added a completely new Settings API that is now independent of the Add-On Framework. - API: Added the [gform_web_api_retrieve_form_totals](https://docs.gravityforms.com/gform_web_api_retrieve_form_totals/) and [gform_rest_api_retrieve_form_totals](https://docs.gravityforms.com/gform_rest_api_retrieve_form_totals/) filters. - API: Fixed an issue which results in request timeouts on some environments when getting forms using REST API v1 or v2. - API: Added stylelint config based on WordPress css standards and applied to admin PostCSS - API: Added array keys to form settings fields to allow for easy targeting within hooks of specific fields. - API: Added a new dropdown/listbox component; currently only used in the form switcher. - API: Added new JavaScript namespaces and utilities to gravityforms.js. - API: Added the admin icon kit as separate file for third party use. - API: Fixed the legacy Font Awesome kit so it won't override other Font Awesome instances found in the WordPress admin. - API: Updated gform_add_meta(), gform_update_meta(), and gform_delete_meta() to return the value of the database query. - API: Updated get_forms method to accept optional parameters to order returned forms. - API: Added the gchoice class to radio field output to match checkbox approach and allow addons/themes easier targeting. - API: Updated the classes that control the widths of fields to include a prefix. - API: Moved the JavaScript hooks functionality out of gravityforms.js to an inline header script to allow for scripts to be loaded in the footer on the theme. - API: Fixed an issue where forms can be assigned duplicate titles when using the GFAPI methods for updating forms and form properties. - API: Fixed an issue where the form returned by GFAPI::get_form() can include the old title when it has been updated using GFAPI::update_forms_property(). - API: Updated the default value of the gform_init_scripts_footer filter from false to true. Init scripts are now outputted in the footer and are triggered on the DOMContentLoaded event. - API: Removed the gform_notification_validation filter. - AF: Updated the Add-On Settings API to use the new Gravity Forms Settings API. Some changes to custom settings may be required. - AF: Updated the prefix for the name attribute on all settings inputs from "gaddon" to "gform". This is a breaking change that can affect add-on settings if they use custom Javascript or CSS. - AF: Added support for Gravity Forms font icons. - AF: Deprecated and fixed the settings_save method in the Add-On Framework. - AF: Updated note type to use add-on slug when adding a note to an entry. - AF: Deprecated the validate_*_settings methods. Use the Settings API instead. ### 2.4.24 | 2021-04-14 - Added security enhancements. - Updated the captcha field so that it does not show autocomplete options. - Updated the system report to include the REST API base URL and to indicate if REST API v2 is enabled. - Updated the wording on the import forms page to clarify the expected file format for importing forms. - Updated the plugin header to include the "Requires at least" and "Requires PHP" properties. - Updated the minimum WordPress version (for support) on the System Status page to 5.6. - Fixed an issue where filters are not applied consistently to repeater field entries. Credit: Paul V. Biron/Sparrow Hawk Computing. - Fixed PHP 8 issues where optional parameters are listed before required ones. - Fixed the text on the edit entry screen for post title so that it is translatable. - Fixed an issue where making a checkbox field the primary key on the entries list page throws a PHP notice. - Fixed an issue where sometimes users are granted `gform_full_access` permission when they shouldn't be. - Fixed an issue where re-running the database upgrade from the System Status page doesn't create the missing gf_rest_api_keys table. - Fixed the deprecation notice in the Gravity Forms Gutenberg block. - Fixed an issue with API V2 key generation where it's possible for the keys to generate with just a prefix and no hash. - AF: Updated the meets_minimum_requirements method to include an error if the installed version of Gravity Forms is older than an add-on requires. - API: Added GFField::filter_input_value() to apply the [gform_get_input_value](https://docs.gravityforms.com/gform_get_input_value/) filter. - API: Added GFAPI::get_feed() for getting a specific feed. - API: Updated the REST API v2 /feeds/[feed id] endpoint to support the PATCH method for updating the specified feed. - API: Fixed an issue with GFAPI::get_feeds() where the requested feed is not returned when inactive. - API: Fixed an issue with GFAPI::get_feeds() where the returned feeds do not include the feed_order property. - API: Fixed an issue where the REST API v2 PUT /feeds/[feed id] endpoint only updates the feed meta. - API: Fixed an issue where the JWT Authentication for WP REST API plugin blocks requests to REST API v2 with a 403 error. - API: Added GFAPI::update_feed_property() to update the specified feed with the given property value. - API: Added GFAPI::feed_exists() to check if a feed exists with the supplied ID. - API: Added the PUT /feeds/[feed id]/properties endpoint to REST API v2 to update one or more properties of the specified feed. - API: Added the [gform_webapi_key_user_capabilities](https://docs.gravityforms.com/gform_webapi_key_user_capabilities/) filter to override which capabilities are used to determine if a user is included in the User drop down menu on the REST API settings page. - API: Fixed an issue where users without the appropriate permissions appear in the User drop down menu when creating a new REST API Key. - API: Updated the `rand_hash()` method with a fallback to generate a hash even if `openssl_random_pseudo_bytes()` returns empty. ### 2.4.23 | 2021-03-03 - Added the [gform_shortcode_builder_forms](https://docs.gravityforms.com/gform_shortcode_builder_forms/) and [gform_block_form_forms](https://docs.gravityforms.com/gform_block_form_forms/) filters enabling the forms available for embedding to be overridden. - Updated the REST API settings page to require the settings to be updated before adding new API keys. - Updated the submission process to allow some payment add-ons to fix errors raised when a form includes an invisible Recaptcha. - Fixed an issue with jQuery 3.0 breaking multiselect conditional logic. - Fixed an issue with the file upload field where validation fails for certain file types. - Fixed an issue where the form editor block generates notices in the JavaScript console. - Fixed an issue that makes multi-page forms with AJAX enabled use the wrong tabindex. - Fixed an issue with sorting forms in PHP 8. - Fixed an issue with auto-updates and PHP 8. - Fixed an issue with the sales page when using MySQL 8+. - Fixed a fatal error in PHP 8 on some Gravity Forms pages. - Fixed checkbox and radio style issues for Twenty Twenty-One Theme. - Fixed an issue where dates/times on the system report and entries list page can output nothing but "at" when the date/time formats on the WordPress general settings page are empty. - AF: Fixed an issue where an uninformative error is displayed if the add-on feed table does not exist. - AF: Added a new method that allows add-ons to fix authentication issues. - API: Updated the `GF_Results_Cache::calculate()` method to make the $args argument optional. - API: Updated the [gform_file_upload_markup](https://docs.gravityforms.com/gform_file_upload_markup/) JS filter to include response as the sixth parameter. - API: Added a new JavaScript function "gformIsRecaptchaPending" to help resolve submission errors raised by some payment add-ons when a form includes an invisible Recaptcha. ### 2.4.22 | 2020-12-22 - Added security enhancements. - Added the [gform_rule_pre_evaluation](https://docs.gravityforms.com/gform_rule_pre_evaluation/) JS and PHP filters enabling conditional logic rules to be overridden just before they are evaluated. Credit: Gravity Wiz. - Updated minimum WordPress version (for support) on the System Status page to 5.5. - Fixed an issue with the Email Field class names in the form editor. - Fixed an issue where a currency formatted number field can save the wrong calculation result to the entry if the rounding setting was previously configured. - API: Added the /forms/{$form_id}/field-filters endpoint to REST API v2. Credit: Gravity Flow. - API: Fixed an issue where a database error can occur when using the GFAPI methods for managing feeds when a feed add-on has not been installed to create the required table. - API: Removed the truncated hashed key from the v2 API Keys list table and edit page. - API: Updated an authentication error logging statement for REST API v2. - API: Updated REST API v2 to support authentication using WordPress 5.6 application passwords. - AF: Removed animation from input toggles on Feed Settings page. - AF: Removed Setup Fee setting when trial is enabled for Payment Add-Ons. ### 2.4.21 | 2020-10-14 - Added security enhancements. - Updated background updates to work more seamlessly with WordPress's automatic updates. - Fixed an issue with date formats when retrieving notes by date. - Fixed an issue where the honeypot field description can be assigned the same id attribute as other forms on the page. - Fixed an issue with WordPress 5.5 where the select all checkbox on the export entries page can stop functioning. - API: Updated REST API for WordPress 5.5. - AF: Fixed a fatal error which occurs when the add-on is not active during background feed processing. - AF: Added the [gform_pre_delete_feed](https://docs.gravityforms.com/gform_pre_delete_feed) action hook. ### 2.4.20 | 2020-08-06 - Added support for WordPress 5.5. - Updated background updates to be compatible with automatic updates in WordPress 5.5. - Updated the translated countries list to be sorted alphabetically. - Fixed a fatal error which occurs when the PowerPack for Beaver Builder plugin uses `GFCommon::gform_do_shortcode()`. - Fixed an issue with the empty form validation ignoring the values of fields with visibility set to hidden. - AF: Fixed a JavaScript error with WordPress 5.5 which prevents dynamic and generic mapping type settings rendering correctly. - AF: Fixed an issue with WordPress 5.5 that breaks the layout of the results pages. - API: Added GF_Field_Address::get_default_countries() which returns the default array of countries using the ISO 3166-1 alpha-2 code as the key to the country name. - API: Fixed the value not being padded when true is passed for the fifth argument of the Currency.numberFormat method in gravityforms.js. - API: Fixed an issue where GF_Field_Address::get_country_code() would return null for some translated countries. ### 2.4.19 | 2020-07-15 - Added security enhancements. - Added [gform_preview_header](https://docs.gravityforms.com/gform_preview_header), [gform_preview_body_open](https://docs.gravityforms.com/gform_preview_body_open) actions to Preview Form page. - Added the [gform_field_size_choices](https://docs.gravityforms.com/gform_field_size_choices/) filter allowing the choices for the Field Size setting in the form editor to be customized. - Updated recommended minimum PHP version on the System Status page to 7.3, matching the WordPress recommendation. - Updated minimum WordPress version on the System Status page to 5.3. - Updated the gravityforms.php examples for defining the reCAPTCHA constants: [GF_RECAPTCHA_PRIVATE_KEY](https://docs.gravityforms.com/gf_recaptcha_private_key/) and [GF_RECAPTCHA_PUBLIC_KEY](https://docs.gravityforms.com/gf_recaptcha_public_key/). - Updated the [field merge tag](https://docs.gravityforms.com/field-merge-tags/) to support the admin modifier. - Updated the [gform_akismet_enabled](https://docs.gravityforms.com/gform_akismet_enabled/) filter to include $form_id as the second parameter. - Updated the [gform_akismet_fields](https://docs.gravityforms.com/gform_akismet_fields/) filter to include $action as the fourth parameter. - Fixed an issue where the maximum files reached message is not removed from the multi-file upload field when an upload is cancelled or errors. - Fixed an issue with Ajax enabled forms where the default Confirmation is displayed instead of the Save and Continue Email Sent Confirmation. - Fixed an issue where the default prefixes for new Name fields can include duplicates when translated. - Fixed an issue with the saving of the screen options on the Forms and Entries list pages introduced by changes in WordPress 5.4.2. - Fixed an issue where the empty form validation error is applied to unsuitable fields such as HTML and Section. - Fixed an issue where PHP notice thrown when a payment add-on failed without providing proper error messages. - Fixed submissions which fail honeypot validation or are marked as spam using the configured confirmation. The default "Thanks for contacting us! We will get in touch with you shortly." message will be used instead. - AF: Fixed a floating point precision issue which can occur for some payment amounts when combined with a 100% coupon resulting in an error from the payment gateway. - API: Fixed an issue where leading and trailing spaces are not removed from values included in the temporary entry produced by GFFormsModel::create_lead(). ### 2.4.18 | 2020-05-06 - Added security enhancements. Credit: Dominik Schilling. - Added a title attribute to the Ajax iframe to pass the W3 validator. - Added accessibility enhancements to the progress bar in multi-page forms. - Added the [gform_post_enqueue_scripts](https://docs.gravityforms.com/gform_post_enqueue_scripts) action hook. - Added *[three new filters](https://docs.gravityforms.com/gform_rich_text_editor_buttons/#filtering-additional-button-rows)* to control the display of buttons in rows two, three, and four of the paragraph field's rich text editor. - Added a logging statement to help identify the reason for the system report displaying the "Table has not been upgraded successfully" message. - Added support for filtering attributes for the [gravityforms] conditional action. - Updated credit card icons so that they are displayed properly on retina screens. - Updated one of the Field Type options to "Single Line Text" in Post Tags and Post Custom Field fields. - Updated the Members and User Role Editor integrations so the Logging and REST API capabilities are located in the Gravity Forms group instead of the GF Add-Ons group. - Fixed an issue introduced in GF 2.4.17.22 where all block types would be available regardless of the types allowed by the WordPress allowed_block_types filter. - Fixed an issue where the multi-file upload field on some multi-page forms can display escaped multibyte unicode characters. - Fixed an issue where the title and description are displayed by the AJAX submission response when disabled on the Form block. - Fixed PHP notices which can occur when uploading a file without an extension. - Fixed credit card icons positioning. - Fixed a PHP warning which occurs when the [gform_form_args](https://docs.gravityforms.com/gform_form_args/) filter does not return an array. - Fixed a PHP fatal error that occurs when the Gravity Forms Gutenberg Add-On (Experimental) is active. - Fixed an issue where Gravity Forms block assets are still enqueued when editing a page or post when the block type is disabled. - Fixed front-end merge tag replacement for the Email field, with confirmation input enabled, including values from both inputs. - Fixed PHP notices which occur when a currency code is passed to GFCommon::remove_currency_symbol(). - Fixed an issue which prevents scripts and styles being enqueued correctly for forms embedded in reusable blocks. - Fixed alignment issues with Form block placeholder elements. - Fixed an issue where the spam filter link is not displayed on the Entries page when some third-party plugins mark entries as spam. - Fixed the product field mapping setting, in the form editor, not displaying the admin labels when available. - Fixed a PHP notice which occurs when using `GF_Field_Consent::get_value_export()` without specifying the input ID. - Fixed PHP notices on the Forms > System Status > Updates page when the plugin is installed in a custom directory. - Fixed an issue where notification routing initially displays the admin labels in the fields drop down but reverts to the front labels when a new rule is added. - Fixed an issue where entry limit and schedule validation errors are not displayed when processing Ajax submissions. - Fixed PHP 7.4 notices which occur when rendering a field without a form object e.g. the User Registration login form. - Fixed a PHP notice which can occur when validating the strength for the Password field. - Fixed PHP notices which occur when using the form title to embed the form and the form is not found. - AF: Fixed an issue on the installed plugins page where the add-on settings page link could disappear when the list is filtered. - AF: Fixed an issue where the Members integration does not list the Results Page capability for add-ons which register a results page configuration e.g. Polls. - AF: Fixed an issue where settings using the jQuery Repeater, such as generic_map, can be broken by custom keys and values containing quotes. - AF: Added `GFPaymentAddOn::is_valid_payment_amount()` which is called during validation when determining if the add-on should process the submission. - AF: Added the [gform_{$short_slug}_is_valid_payment_amount](https://docs.gravityforms.com/gform_short_slug_is_valid_payment_amount/) filter. - AF: Added `GFAddOn::get_short_slug()` to return the add-on slug with the gravityforms prefix removed. - API: Added the [gf_has_filters](https://docs.gravityforms.com/gf_has_filters/) function to check if a callback is registered for the specified filter. - API: Added the [gf_has_action](https://docs.gravityforms.com/gf_has_action/) function to check if a callback is registered for the specified action. - API: Add functions to get, add, update, and delete entry notes. - API: Add endpoints for notes to REST API v2. ### 2.4.17 | 2020-02-05 - Added security enhancements. Credit: Ryan Knell. - Added the "Empty (no choices selected)" choice to the conditional logic rule value drop down for Multi Select fields. - Added an error message to Form block when no forms exist. - Added the *[gform_print_entry_notes](https://docs.gravityforms.com/gform_print_entry_notes/)* filter. - Updated the Field Choices tooltip in the form editor. - Updated file upload validation logging statements. - Updated documentation links on the Forms > Help page. - Updated the print entry stylesheet to remove the page break between the entry and its notes. - Updated the *[gform_form_export_filename](https://docs.gravityforms.com/gform_form_export_filename/)* filter to include an additional parameter containing the IDs of the forms to be exported. - Fixed an issue with the width of the Form Settings submenu links. Credit: The GravityView team. - Fixed an issue with the text format {all_fields} output for Multi Select fields created with GF2.2+. - Fixed an issue with the tabindex when the form contains a Captcha field which is not the last field. - Fixed a PHP notice which occurs when a page containing multiple Ajax enabled Form blocks is displayed. - Fixed an issue where an uploaded file could lose the original filename on entry save if it contains multibyte characters. - Fixed an issue where the Checkboxes "select all" feature does not trigger calculations. - Fixed an issue where the Checkboxes "select all" feature does not function for some form configurations using Poll, Quiz, or Survey fields. - Fixed an issue where multiple "other" inputs can be displayed for the Radio Buttons field in some scenarios. - Fixed an issue with the entry limit per day for timezones other than UTC. - Removed the orphaned (empty) entry deletion task from the daily cron job. - AF: Fixed PHP notices thrown on the feed edit page in PHP 7.4. - AF: Fixed a PHP 7.4 warning which occurs when the update_plugins transient is cleared on installation of a new plugin. - AF: Fixed an issue where an add-on is not deactivated on uninstall if it's path does not match the expected path. - AF: Added GFPaymentAddOn::get_payment_field() to determine what should be used as the payment amount; the form total or a specific product field. - AF: Fixed an issue on the results page where multiple filters are added after clearing the previous filters. - AF: Fixed a PHP 7.4 notice which can occur when payment add-ons retrieve the submission data. - AF: Updated the frontend feeds scripts loading priority to 20. - AF: Fixed an issue where payment add-ons may process submissions marked as spam. - API: Fixed an issue when providing an invalid date_created date while retrieving entries. - API: Fixed a PHP notice which occurred in GFAPI::get_form() when the meta is cached and the form properties have been deleted from the database. - API: Added support for the "notin" search operator. Credit: The GravityView team. ### 2.4.16 | 2019-12-18 - Added security enhancements. - Added the *[gform_form_summary](https://docs.gravityforms.com/gform_form_summary/)* filter. - Added the *[gform_form_switcher_forms](https://docs.gravityforms.com/gform_form_switcher_forms/)* filter. - Added performance enhancement: updated the gform_version_info option so autoload is disabled. - Updated the minimum version of WordPress required for support to 5.2. - Fixed an issue where merge tags used in the placeholder setting of drop down fields are not being processed. - Fixed an issue where PHP notices thrown in PHP 7.4 when Stripe add-on is enabled. - Fixed a compatibility issue with the Form block and WPGraphQL Gutenberg. - Fixed a JavaScript error which can occur in the form editor when trying to edit a field which has been populated with integer based choices via a form object filter. - Fixed PHP 7.4 compatibility issues. Credit: The Gravity PDF team. - Fixed some untranslatable strings for the form and entry locking features. Credit: The GravityView team. - Fixed an issue with the styles for the active/inactive toggle in the admin. - Fixed an issue where the conditional shortcode can output content when using an ends_with 0 rule and the value does not match. Credit: The Gravity PDF team. - Fixed a typo in the address field's country subfield for the Brunei Darussalam choice. - Fixed the form block and widget not centering when using the Twenty Twenty theme. - Fixed an issue with the US/Canada phone field type not validating correctly when the no duplicates feature is enabled. - Fixed the form widget not suppressing the tabindex by default. - Fixed a PHP notice for $phpmailer->ErrorInfo in certain sites where a third-party plugin or custom function could be altering the $phpmailer object. - Fixed the front-end merge tag replacement returning values for fields in sections hidden by conditional logic. - Fixed an issue where [gform_input_change](https://docs.gravityforms.com/gform_input_change/) filter doesn't pass correct values for its parameters. - Fixed styling conflict between Ready Classes and the Signature Add-on field. - Fixed the password field using the password strength feature throwing a false validation error in some multi-page form configurations. - Fixed an issue where spaces at the beginning of a consent field's label can trigger false validation errors on a multi-page form if the field is marked as required. - Fixed the password visibility toggle being clickable when editing form. - AF: Fixed a database error which could occur when uninstalling a payment add-on which does not support callbacks. - API: Fixed an issue with GFAPI::get_feeds() and the GET gf/v2/feeds and GET/PUT/DELETE gf/v2/feeds/[feed_id] endpoints where feeds cannot be updated or deleted correctly. - API: Fixed an issue with GFAPI::update_forms_property() which can result in updating the wrong forms. - API: Fixed the gravity_form() function not suppressing the tabindex by default. ### 2.4.15 | 2019-11-06 - Added entry notes with the sending result as part of the notification sending process. These notes can be customized or disabled using the *[gform_notification_note](https://docs.gravityforms.com/gform_notification_note/)* filter. - Added the *[gform_logging_message](https://docs.gravityforms.com/gform_logging_message/)* filter. Credit: Jamie Oastler. - Added support for disabling Confirm Password input in Password field. - Added password visibility toggle to Password field, enabled via new field setting. - Added support for osDXP. - Updated handling of sending notes and logging messages when no entry id is provided. - Updated Password field strength meter to match the WordPress password strength algorithm. - Updated the *[gform_{$SHORT_SLUG}_error](https://docs.gravityforms.com/gform_slug_error/)* hook to include *$error_message* as the fourth parameter. - Fixed update notifications on the Plugins page of a subsite when Gravity Forms or add-ons are activated on it, but aren't activated on the main site or the network. - Fixed an issue with invisible reCaptcha which can prevent the form from being submitted. - Fixed an issue where the honeypot can be assigned the wrong ID when the form contains Repeater fields. - Fixed a JavaScript error when conditional logic based on the radio button field other input is evaluated. - Fixed the form ID not being passed to the *[gform_phone_formats](https://docs.gravityforms.com/gform_phone_formats/)* filter when the field settings are sanitized on form save. - Fixed a PHP warning that would output if a notification is set to use conditional routing for the Send To address but no routing rules are defined. - Fixed active and inactive form counts not updating when changing a form's active status. - Fixed a corrupt confirmation being created for a form when all the confirmations have been deleted and there isn't a legacy confirmation (pre 1.7) to upgrade. - Fixed an issue with the address field where countries with apostrophes throw incorrect validation errors in certain situations. - Fixed PHP fatal errors caused by some required files not being loaded when the site path includes square brackets. - Removed the ability to set a placeholder in the settings UI for a consent field as the field does not use placeholders or the entered value anywhere. - API: Fixed an issue with field visibility evaluation for third-party integrations processing multiple entries in the same request. Credit: The GravityView team. - API: Fixed inactive notifications not being sent when using the v2 POST /entries/[ENTRY_ID]/notifications endpoint with the _notifications arg. ### 2.4.14 | 2019-09-25 - Fix an issue with the automatic update. ### 2.4.13 | 2019-09-25 - Added support for delaying feed processing with Stripe Add-On version 3.1 and greater when using the Stripe Checkout payment collection method. - Added support for defining field values when using the Form block in the WordPress editor. - Added the *[gform_notification_disable_from_warning](https://docs.gravityforms.com/gform_notification_disable_from_warning/)* filter to allow the from address warning to be disabled. - Updated *[gform_post_note_added](https://docs.gravityforms.com/gform_post_note_added/)* filter to support new note sub-type parameter. - Updated Import/Export page to be accessible if user has "gravityforms_edit_forms" capability. - Removed support for the Members plugins v1. Members v2+ integration remains. - Fixed the conditional logic init scripts not being output when a Repeater field is located before other fields with conditional logic. - Fixed an issue where HTML tags in field choices break conditional logic. - Fixed an issue with the merge tag UI where labels with HTML tags are not encoded. - Fixed an issue with the merge tag UI where the selected merge tag is incomplete if the label contains a double quote character. - Fixed detection of domain used for the From Email warning message in the notification settings in certain scenarios. - AF: Added GFPaymentAddOn::get_post_payment_actions_config() for payment add-ons to define where the Post Payment Action setting (delayed feeds) should appear on their feed configuration page. - AF: Added GFPaymentAddOn::trigger_payment_delayed_feeds() for payment add-ons to call when delayed feeds should be processed. - AF: Added the *[gform_trigger_payment_delayed_feeds](https://docs.gravityforms.com/gform_trigger_payment_delayed_feeds/)* action hook which runs when payment add-ons trigger delayed feeds. - AF: Added the *[gform_post_save_feed_settings](https://docs.gravityforms.com/gform_post_save_feed_settings/)* action hook which runs when the feed is saved or updated from the feed configuration page. - AF: Fixed an issue where multiple GFPaymentAddOn based payment add-ons would process the submission when conditional logic isn't configured on the feeds. - AF: Fixed issue where select fields overflow and break the settings layout. ### 2.4.12 | 2019-08-28 - Added security enhancements. - Added From Email validation in the notifications settings. - Added From Email warning message in the notification settings when the site domain is not being used for this setting. - Added *[gform_export_line](https://docs.gravityforms.com/gform_export_line/)* filter to allow modifying each line of the export separately. - Updated the default placeholder for new Website fields. Credit: The GravityView team. - Fixed a typo preventing the year sub-label input from displaying when editing a date field and having sub-label placement set to be above inputs. - Fixed Dashicons not appearing in the block editor when using a Classic block with a Gravity Forms shortcode whose form contains a Rich Text Editor enabled Paragraph field. - Fixed legacy database errors and notices generated during the uninstall process for add-ons. - Fixed a PHP fatal error which can occur during entry export if invalid values are entered in the start or end date filters. - Fixed PHP errors which could occur if the gform_recent_forms user meta does not contain the expected value. - API: Fixed an issue with the way REST API v2 is handling entry values for legacy (pre v2.2) Multi Select fields. ### 2.4.11 | 2019-07-10 - Added security enhancements. Credit: SimranJeet Singh (@TurbanatorSJS). - Added accessibility enhancements. - Updated the minimum version of WordPress required for support to 5.1. - Updated the system report to include timezone details. - Updated new Drop Down type Quantity fields to default to numeric choices. Credit: The GravityView team. - Updated the Website type field input markup, removing the unused maxLength attribute. Credit: The GravityView team. - Updated the Single Line Text field to validate the value length during submission when the maxLength property is configured. Credit: The GravityView team. - Fixed an issue where special characters (e.g. accented characters) in List and Multi-Select fields are ignored when searching for entries. - Fixed form scripts not enqueueing when Form block is nested. - Fixed an issue where the use of GLOB_BRACE during the daily cron task can cause PHP errors in non-GNU operating systems. - Fixed an issue with conditional notification routing when checking if a field value ends with a 0 due to it being treated as an empty string rather than an integer. - Fixed the legacy table access PHP notices being displayed when deleting a site on multi-site installations. - Fixed an issue with the Address field in the form editor where the source field setting doesn't display the previously selected option when copying values of another field. - Fixed an issue with the Rich Text Editor for the Paragraph and Post Body fields with WordPress 5.2 when submit button conditional logic is configured. - Fixed an issue with PHP 7.0+ where the submission could die when an invalid calculation formula is evaluated. Credit: The GravityView team. - Fixed a PHP notice during validation of the Password strength if JavaScript is disabled in the browser. Credit: The GravityView team. - Fixed an issue with submitting when multiple AJAX enabled forms are embedded into one page and invisible reCAPTCHAs are present. - Fixed an issue when tabbing through a form where an invisible reCAPTCHA is present. - Fixed an issue where a field's character count text could duplicate when submitting an AJAX enabled form. - Fixed the required Address field city input missing the aria-required attribute when the zip input is located before the city. - Fixed an issue with the background tasks response in the system report containing extraneous characters. - API: Added GFAPI::log_debug() and GFAPI::log_error() which write to the "Gravity Forms API" log. - API: Added support for the id query param on the export entries page (/wp-admin/admin.php?page=gf_export&view=export_entry&id=[FORM ID]) to preselect the form. Credit: The GravityView team. - API: Added logging helpers and logging statements to various methods in REST API v2. - API: Updated REST API v1 to write to the "Gravity Forms API" log. - API: Fixed GFAPI::update_entry() and GFAPI::update_entry_field() for repeater fields. - API: Fixed an issue with GFAPI::update_entry_field() not saving zero when passed as an integer if the input doesn't have an existing entry value. - API: Fixed an issue with GFAPI::submit_form() and the POST forms/[form ID]/submissions endpoint where validation fails for product fields. - AF: Added header title support for dynamic field map settings fields. - AF: Updated + and - icons so that they are consistent accross all settings fields. ### 2.4.10 | 2019-06-12 - Added the Form block to the editor. - Updated the default scroll positions to display the error or confirmation message for AJAX forms. - Updated the credit card field so, like other pricing fields, it is not editable on the entry detail page. - Fixed a database error when getting REST API keys on a sub-site of a WordPress multi-site installation. - Fixed the credit card type value being lost when the entry is updated from the entry detail page. - Fixed a fatal error which occurs when using the widget_title filter with two or three arguments. ### 2.4.9 | 2019-05-08 - Added security enhancements. Credit: Jan van der Put and Harm Blankers of REQON Security. - Added accessibility enhancements to the date picker in the date field. - Added additional information to logging messages for notifications email sending. - Added $format parameter to *[gform_merge_tag_filter](https://docs.gravityforms.com/gform_merge_tag_filter/)* filter. - Added *[gform_file_upload_status_markup](https://docs.gravityforms.com/gform_file_upload_status_markup/)* filter to allow modifying file upload markup while it is being uploaded. - Updated created_by entry property to save as an empty value when undefined. - Updated Chosen.js to v1.8.7. - Updated the source URL to account for query strings in URLs. - Fixed and issue with the repeater field where the radio buttons selection disappears when adding a new row. - Fixed an issue where filter counts on the form and entry list pages could be set to negative values. Credit: The GravityView team. - Fixed an issue where choices property are not correctly reset when changing Post Custom Field input type. - Fixed an issue where Hidden Product fields hidden/shown by conditional logic do not have their price correctly reset. - Fixed the Enhanced UI on the Option type field not retaining the selected choice. - Fixed an issue with files containing special characters not attaching to notifications. - Fixed an issue where the default value is not populated for empty inputs when other inputs have dynamically populated values. - Fixed an issue where default values are not repopulated into Multi Select fields when they are hidden via conditional logic. - Fixed the price not being restored by conditional logic when the single product/shipping field has the unsupported choices property defined. - Fixed an issue where datepicker fails to initialize when filtering Date fields in the Entry List filter. - API: Fixed a fatal error which occurs when using REST API v2 to get an entry which does not exist. - API: Fixed an issue with GFAPI::update_form() when notifications/confirmations are included in the form using indexed arrays. ### 2.4.8 - Fixed notices generated when AF add-ons did not specify a *$_capabilities_form_settings* capability or specified an array of capabilities. - Fixed an issue with the Gravity Forms widget introduced in v2.4.7 where forms are missing the gf_global JavaScript variable. ### 2.4.7 - Added security enhancements. - Added accessibility enhancements.fv - Added support for Invisible reCAPTCHA v2. - Added screen reader support for Single File Upload field validation messages. - Added aria-describedby to single input fields including: Number, Phone, Post Title, Post Body, Post Excerpt and Post Custom Field. - Added *[gform_export_entries_forms](https://docs.gravityforms.com/gform_export_entries_forms/)* filter to modify forms displayed on Export Entries page. - Added *[gform_export_forms_forms](https://docs.gravityforms.com/gform_export_forms_forms/)* filter to modify forms displayed on Export Forms page. - Added some logging statements to log which user moved to trash, deleted or updated an entry. - Added gformInitSingleDatepicker() function and refactored gformInitDatepicker() to use it. - Updated the way the gf_global is output to the page. This fixes an issue with pricing fields when scripts are loaded in the footer or when the defer attribute is added to the script tags with custom code. - Updated GFFormSettings::get_tabs() to not default tab capabilities to *gform_edit_forms*. - Updated default form notification to include enabled isActive property. - Updated the use of "title" attributes in HTML tags. - Updated usage of .screen-reader-text usage to be uniform with WordPress core. - Updated file deletion to not utilize WP_CONTENT_DIR and WP_CONTENT_URL. - Updated the Canadian Provinces list to use "and" instead of ampersand for Newfoundland and Labrador. - Updated the minimum version of WordPress required for support to 5.0. - Updated form anchor to use `