From cc536959630f6cea948e5321cc33b3fcf082476c Mon Sep 17 00:00:00 2001
From: "vivi-the-going-merry[bot]"
<308115520+vivi-the-going-merry[bot]@users.noreply.github.com>
Date: Tue, 20 Oct 2026 19:11:21 -0600
Subject: [PATCH 1/4] Add test: settings form posts action field for add-ons
---
.../settings/test_FrmSettingsController.php | 25 +++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100644 tests/phpunit/settings/test_FrmSettingsController.php
diff --git a/tests/phpunit/settings/test_FrmSettingsController.php b/tests/phpunit/settings/test_FrmSettingsController.php
new file mode 100644
index 0000000000..5bf1cc7ecd
--- /dev/null
+++ b/tests/phpunit/settings/test_FrmSettingsController.php
@@ -0,0 +1,25 @@
+factory->user->create( array( 'role' => 'administrator' ) ) );
+
+ ob_start();
+ FrmSettingsController::display_form();
+ $html = ob_get_clean();
+
+ $this->assertStringContainsString( '', $html );
+ $this->assertStringContainsString( '', $html );
+ }
+}
From 851ba4e93322fe238b2a1242fea7317db5ecffcb Mon Sep 17 00:00:00 2001
From: "vivi-the-going-merry[bot]"
<308115520+vivi-the-going-merry[bot]@users.noreply.github.com>
Date: Tue, 20 Oct 2026 19:16:12 -0600
Subject: [PATCH 2/4] Restore hidden action field on the Global Settings form
Add-ons read 'action' (not 'frm_action') in their settings routes, so
removing it in 04702c59a0 stopped them from saving.
Co-Authored-By: Claude Sonnet 5.5
---
classes/views/frm-settings/form.php | 2 ++
1 file changed, 2 insertions(+)
diff --git a/classes/views/frm-settings/form.php b/classes/views/frm-settings/form.php
index 99ea8670d2..7a6e37a40e 100644
--- a/classes/views/frm-settings/form.php
+++ b/classes/views/frm-settings/form.php
@@ -26,6 +26,8 @@
+
+
Date: Tue, 20 Oct 2026 19:26:09 -0600
Subject: [PATCH 3/4] Drop inline comment that fails PHPCS
Co-Authored-By: Claude Sonnet 5.5
---
classes/views/frm-settings/form.php | 1 -
1 file changed, 1 deletion(-)
diff --git a/classes/views/frm-settings/form.php b/classes/views/frm-settings/form.php
index 7a6e37a40e..ecbc28b012 100644
--- a/classes/views/frm-settings/form.php
+++ b/classes/views/frm-settings/form.php
@@ -26,7 +26,6 @@
-
From a7243d2a023291eada6d5e0b7e7277ae7c0a58d2 Mon Sep 17 00:00:00 2001
From: "vivi-the-going-merry[bot]"
<308115520+vivi-the-going-merry[bot]@users.noreply.github.com>
Date: Tue, 20 Oct 2026 21:21:14 -0600
Subject: [PATCH 4/4] Allow the shared action name in the settings HTML
validation
Co-Authored-By: Claude Sonnet 5.5
---
tests/cypress/e2e/admin-html-validation.cy.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/cypress/e2e/admin-html-validation.cy.js b/tests/cypress/e2e/admin-html-validation.cy.js
index 7fe46bfcd4..adb095ae4e 100644
--- a/tests/cypress/e2e/admin-html-validation.cy.js
+++ b/tests/cypress/e2e/admin-html-validation.cy.js
@@ -29,6 +29,8 @@ describe( 'Run some HTML validation', function() {
cy.visit( '/wp-admin/admin.php?page=formidable-settings' );
cy.get( '#wpbody-content' ).htmlvalidate( {
rules: {
+ // The hidden `action` field and the MCP buttons' `action` share a name on purpose.
+ 'form-dup-name': 'off',
'element-permitted-content': 'off',
'valid-id': 'off',
'prefer-button': 'off',