Releases: AxeWP/wp-graphql-gravity-forms
v0.13.3
This minor release improves compatibility with WPGraphQL v2.6.0, Gravity Forms v2.9.x, WordPress 6.9, and PHP 8.4. Additionally, we've migrated our development and testing environment to use @wordpress/env (wp-env), integrated Prettier and @wordpress/scripts for codebase management, and made some bug fixes and performance improvements.
What's Changed
- feat: Refactor File Upload handling for Gravity Forms 2.8.6+ compatibility.
- perf: Add support for AppContext::get() and ::set() in WPGraphQL v2.3.8+.
- perf: Migrate DataLoader registration to use lazy-loaded
graphql_data_loader_classesfilter. H/t @bpkennedy - fix: Cleanup activation lifecycle.
- fix: Prevent duplicate file counts for Single File Upload fields. Props @Gytjarek
- chore: Update Composer dependencies.
- dev: Integrated Prettier and
@wordpress/scriptsfor standardized codebase management. - dev: Migrate development and testing environment to
@wordpress/env(wp-env), and update scaffolding for best practices. - ci: Cleanup and optimize GitHub workflows.
- ci: Test compatibility against PHP 8.4.
- ci: Test compatibility against WPGraphQL v2.6.0 and WordPress 6.9.
New Contributors
- @dependabot[bot] made their first contribution in #464
- @Gytjarek made their first contribution in #461
Full Changelog: v0.13.2...v0.13.3
v0.13.2
This minor release adds support for WPGraphQL v2.3.3, including lazy-loaded descriptions for GraphQL types which should result in significant performance improvements when querying the schema, especially for i18n users.
What's Changed
- dev: Add support for lazy-loaded descriptions.
- ci: Test compatibility against WPGraphQL v2.3.3.
- chore: Update Composer dependencies, and remediate PHPCS/PHPStan issues.
Full Changelog: v0.13.1...v0.13.2
v0.13.1
This minor release tests compatibility against WordPress 6.8.x and WPGraphQL 1.31.x.
Note
Technically, this release is compatible with WPGraphQL v2.x with the exclusion of a regression when Type Tracking is enabled. Once wp-graphql/wp-graphql#3341 is resolved, we will bump the compatibility headers to v2.x.
What's changed
- ci: Test compatibility against WP 6.8.x and WPGraphQL 1.31.x
- chore: Update Composer dependencies, and remediate PHPCS/PHPStan issues.
- tests: Fix Composer-dev namespace for tests.
Full Changelog: v0.13.0...v0.13.1
v0.13.0.1
This patch release fixes compatibility with Composer-based WordPress installations, and a few minor issues introduced in the previous release.
- fix: Check if classes are loaded by a different autoloader before attempting to autoload them. H/t @cvanh
- fix: Return
wp_max_upload_size()instead ofnullifGfFieldWithFileSizeSetting.maxFileSizeisnull. H/t @Gytjarek - fix: Fix typo in Autoloader release URL.
- fix: Ensure a valid source ID exists before attempting to resolve a
connectedFormField. - ci: Test compatibility against WP 6.6.
- ci: Replace calls to
docker-composewithdocker compose.
Full Changelog: v0.13.0...v0.13.0.1
v0.13.0
This major release leverages new WPGraphQL v1.26 features to enhance our schema and resolvers. The FormsConnectionResolver and EntriesConnectionResolver have been refactored to take advantage of upstream API changes, and a new FormField model, Dataloader, and ConnectionResolver is used to boost performance and flexibility. The schema DX by narrowing down types from their interfaces, we've adding other new features, bug fixes, and code quality improvements.
In this release, we've also removed the vendor directory from the GitHub repository. If you have been downloading the plugin's source code instead of the release zip, you will need to run composer install to install the required dependencies.
Note: As a result of these changes, the following minimum versions have been bumped:
- WPGraphQL: v1.26.0
- WordPress: v6.0.0
- Gravity Forms: v2.7.0
What's New:
-
We've added support for the Gravity Forms Block when using WPGraphQL Content Blocks, by exposing the
GfFormon theGravityformsFormAttributes.formfield. -
We've implemented a complete
Model->Dataloader->ConnectionResolverpattern for Form Fields. As a result resolving form field data is significantly more performant and flexible, and our FormField connections are fully Relay compliant.- 🚨 Breaking: The deprecated (int)
FormField.idhas been reinstated as a relay-compliantID. If you are still usingidas the integer database ID, you will need to update your queries to useFormField.databaseId. - 🚨 Breaking: Form Field resolvers now return a
FormFieldmodel instead of the underlying form. While you can update your custom resolvers to access the underlying form via$source->gfForm, it's recommended to rely on theModel's fields for better performance and reliability. - Thanks to the new dataloader, we can now more easily and scalably resolve
FormFields in more places in the schema. In this release we have:- Added the
FieldError.connectedFormFieldfield. - Deprecated (int)
GfFieldWithProductFieldSetting.productFieldin favor of.connectedProductField. - Updated our existing
.connectedFormFields across the schema to use the new Dataloader. - Exposed
SubmitGfFormPayload.targetPageFormFieldsto help with multi-page form support. See notes below for more information.
- Added the
- 🚨 Breaking: The deprecated (int)
-
🚨 Breaking: We've improved the DX for
FormField.choicesand.inputsby narrowing down the field definitions on the implementing Types. For example, instead ofCheckboxField.choicesresolving to a genericGfFieldChoiceinterface, it now resolves directly to `CheckboxFieldChoice.Note: If your queries are checking for "impossible" interfaces, (e.g.
... on ListFieldChoiceon aCheckboxField.choicesquery), you will need to update your queries. A full list of breaking schema changes can be found below. -
We've improved the DX and handling of multi-page forms:
-
🚨 Breaking:
PageFields are now paginated to be at the bottom of the previous page, instead of at the top of the following page. H/t @SamuelHadsall.Note: If you are currently working around the old pagination on your frontend (e.g. overfetching and post-processing your
formFields), you may need to update your code. -
We've added
targetPageNumberandtargetPageFormFieldsto theSubmitGfFormPayloadto help with multi-page form support, allowing you to fetch, submit, and validate a single page at a time before navigating to the next page. Check out the updated docs for more information and usage.
-
-
🚨 Breaking: We've refactored the
EntriesConnectionResolverandFormsConnectionResolverclasses to use the new API methods available as of WPGraphQL v1.26.0, leading to improved performance and reliability.Note: If you are extending these classes in your custom code, you will need to update your code to match the new method signatures.
-
🚨 Breaking: We've removed the following deprecated code. If you are still referencing these in your GraphQL queries or custom PHP, you will need to update your code:
- Deprecated GraphQL fields:
FormsConnectionOrderbyInput.field,GfFieldWithDisableQuantitySetting.isQuantityDisabled.GfSubmittedEntry.entryId.GfForm.button,gfForm.entryId,gfForm.lastPageButton. - Deprecated hooks:
graphql_gf_form_modeled_data_experimental,graphql_gf_form_field_setting_properties,graphql_gf_form_field_value_properties. - Deprecated helper methods:
GFUtils::handle_file_upload().
- Deprecated GraphQL fields:
Breaking Schema Changes
- Field
FormField.idchanged type fromInt!toID! - Field
{$TYPE}Field.inputschanged type from[GfFieldInput]to[{$TYPE}InputProperty] - Field
{$TYPE}Field.choiceschanged type from[GfFieldChoice]to[{$TYPE}FieldChoice] - Field
values(deprecated) was removed from object typeFileUploadField - Input field
field(deprecated) was removed from input object typeFormsConnectionOrderbyInput - Field
isQuantityDisabled(deprecated) was removed from interfaceGfFieldWithDisableQuantitySetting - Field
button(deprecated) was removed from object typeGfForm - Field
formId(deprecated) was removed from object typeGfForm - Field
lastPageButton(deprecated) was removed from object typeGfForm - Field
entryId(deprecated) was removed from object typeGfSubmittedEntry
Fixes
- fix: Add missing descriptions to various GraphQL types.
- fix: Check for Submission Confirmation url before attempting to get the associated post ID.
- fix: Flush static Gravity Forms state between multiple calls to
GFUtils::submit_form(). - fix: Handle
RadioFieldsubmission values when using a custom "other" choice. H/t @Gytjarek .
Behind the Scenes
- dev: Add new
graphql_gf_activateandgraphql_gf_deactivateactions. - dev: Deprecate
FieldValues::is_field_and_entry()and remove internal usage. - dev: Remove
vendordirectory from the GitHub repository, and improve plugin initialization and autoload handling. - dev: use
WP_Filesystemto handle Signature field uploads. - chore: Declare
strict_typesin all PHP files, add type hints to all iterable types. and fix exposed type errors. - chore: Update Composer dev-dependencies and fix test compatibility with
wp-graphql-test-casev3.0.x. - chore: Update PHP interfaces and Abstract classes with better type hints.
- chore!: Bump minimum Gravity Forms version to v2.7.0.
- chore!: Bump minimum WordPress version to v6.0.0.
- chore!: Bump minimum WPGraphQL version to v1.26.0.
- tests: Add test for
GFUtils::get_last_form_page().
Full Changelog: 0.12.6.1...v0.13.0
v0.12.6.1
This patch release fixes the version number in the plugin header, which was incorrectly set to 0.12.5 instead of 0.12.6.
- fix: Correct version number in plugin header.
Full Changelog: v0.12.6...0.12.6.1
v0.12.6
This minor release adds explicit support for PHP 8.2 and WordPress 6.5 - including the new Plugin Dependency header. Additionally, we've updated the Composer dependencies, and improved code quality and type safety.
What's Changed
- feat: Add plugin dependency header.
- chore: Update Composer deps and lint.
- chore: Lock WPBrowser to <3.5.0 to prevent conflicts with Codeception.
- chore: Implement strict PHPStan rules and fix resulting issues.
- chore: Add traversable type hints throughout the codebase.
- tests: Lint tests.
- ci: Update GitHub Actions to latest versions.
- ci: Test plugin compatibility with WordPress 6.5.0.
- ci: Test plugin compatibility with PHP 8.2.
Full Changelog: v0.12.5...v0.12.6
v0.12.5
This minor release fixes a bug where EmailField.inputs were returning null when Email Confirmation is disabled and an issue where formFields were not being correctly filtered by their where args.
We've also updated the Composer dependencies, did some code linting, and tested compatibility against WordPress 6.4.x.
What's Changed
- fix: Ensure
EmailFieldinputs are hydrated when Email Confirmation is disabled. H/t @Gytjarek. - fix: Correctly use filtered form fields when preparing the connection data. H/t @SamuelHadsall.
- chore: Update
yahnis-elsts/plugin-update-checkerto v5.3. - chore: Update
axepress/wp-graphql-csto v2.0.0-beta.2 and fix resulting issues. - chore: Update Composer dev deps.
- ci: Test compatibility with WordPress 6.4.x
- docs: Add docs on troubleshooting i18n issues. H/t @Dev-Ditrict-Web.
Full Changelog: v0.12.4...v0.12.5
v0.12.4
This minor release fixes a bug where updating the plugin via the WordPress backend would fail due to changes to GitHub's API.
Note: Users relying on WordPress's built-in plugin update mechanism will need to update manually to this version by downloading the release zip.
What's Changed
- fix: Fix installation errors when upgrading plugin via the WordPress backend. H/t @Shaderpixel.
- chore: Update
yahnis-elsts/plugin-update-checkerto v5.2. - ci: Include top-level plugin folder in release zip.
Full Changelog: v0.12.3...v0.12.4
v0.12.3
This minor release fixes a few bugs when resolving GfEntry data, and addresses some code smells from the updated WPGraphQL Coding Standards. We're also now testing the plugin against WordPress 6.3 and PHP 8.1.
What's Changed
- fix: Check if entries exist before resolving the connection
count. - fix: Improve type checks when calculating the
QuizResultsdata. - fix: Pass the entry array to the
QuizResultsresolver. - chore: Fix Composer PHP version constraints and rebuild lockfile. Thanks @szepeviktor!
- chore: Update WPGraphQL Coding Standards to 2.0.0-beta.1 and fix resulting issues.
- chore: Update Composer dev-deps.
- chore: Update links to repo and README.
- tests: Set
WPLoader.loadOnlyto true for acceptance suite. Thanks @lucatume! - ci: Fix GitHub Action workflows by locking MariaDB version to v10.
- ci: Test against WordPress 6.3 and PHP 8.1
Full Changelog: v0.12.2...v0.12.3