Sync master from upstream - #119
Merged
Merged
Conversation
…om CSS on single form view Adds a 'Disable SureForms Styling' toggle (Style tab > Advanced) that renders the form without the SureForms opinion CSS so the site's own CSS fully controls the form's appearance: - Skips the inline derived CSS-variable style block for the form - Skips enqueueing the SureForms frontend stylesheets when every form on the requested page has the toggle enabled (third-party library styles for Dropdown/Phone and all scripts are still loaded) - Adds a srfm-styling-none container class so the state is targetable Known limitation: when a page mixes styled and unstyled forms, the stylesheets still load page-wide (they are page-level assets); the unstyled form only skips its inline variable block. Also fixes: the per-form Custom CSS box (_srfm_form_custom_css) was only echoed when the current post type was not sureforms_form, so it never applied on the form's own single/instant form view — only on embedded views. It is now output on all views.
…ueue Adds unit tests for Form_Styling::is_default_styling_disabled(), Form_Styling::get_form_ids_from_content(), Form_Styling::should_skip_frontend_styles() and Frontend_Assets::enqueue_scripts_and_styles() with the skip_form_styles flag.
Adds a Payment History widget/element to both page builders at parity with the srfm/payment-history Gutenberg block, rendering via Payment_History_Shortcode. Closes #2930
Add disableDefaultStyles to the formStyling object in the create-form and update-form ability input schemas, and map it to the _srfm_forms_styling.disable_default_styles meta so MCP clients can enable the unstyled mode when creating/updating a form.
Remove the block-editor sidebar toggle for disabling default styling and keep the feature controllable only programmatically: - Add srfm_disable_default_styles filter in Form_Styling::is_default_styling_disabled() so themes/plugins can override the stored meta per form. - Route the marker class and inline-CSS guard in generate-form-markup through the canonical reader so the filter governs them too. - The _srfm_forms_styling.disable_default_styles meta stays registered and remains settable via REST and the MCP/Abilities API. - Drop the now-unused ToggleControl import and the Style tab UI block.
Master to Dev 2.12.1
Dev to Next Release 2.12.1
Gutenberg persists PluginDocumentSettingPanel state as closed until the user toggles it, so on a fresh install the SureForms Description panel rendered in single-form-settings/Editor.js stayed collapsed. forcePanel() already enables and opens the sibling Form Options panel on editor load; apply the same enable + open pattern to srfm-form-specific-settings/srfm-description so both panels are expanded by default. Fixes #2288 (SF-1485)
…detection - Revert the Change-2 guard removal: on the single/instant form view templates/single-form.php already outputs the per-form Custom CSS in <head>, so get_form_markup() emitting it too duplicated it. The scoped output is now embedded-views-only again (single output path per view, zero net behavior change vs the released plugin). - Skip the whole scoped <style> block when default styling is disabled and there is no Custom CSS to print (no empty ruleset). - Compute is_default_styling_disabled() once per render — the srfm_disable_default_styles filter now runs a single time and governs the enqueue path, marker class and inline-CSS guard together. - Form_Styling::get_form_ids_from_content() now resolves reusable/synced patterns: core/block refs are expanded into their wp_block posts (published only) with a visited-set cycle guard, and the has_block() gate also enters on core/block — a form living inside a pattern can no longer cause the frontend stylesheets to be wrongly skipped (FOUC). - Tests: Custom CSS exactly once embedded / absent from markup on single view, Custom CSS + marker class with styling disabled, inline variable block present/absent, no style tag when disabled without CSS, styling/formStyling independent mapping, reusable-block detection and cycle termination. - ABILITIES.md: note that unstyled mode drops layout CSS, embedded Custom CSS is container-scoped, and nesting needs 2023+ browsers.
…nel-open-default fix: open SureForms Description panel by default in the form editor
…yling feat: per-form "Disable SureForms Styling" option + fix Custom CSS not applying on single form view
…ry-elementor-bricks feat: Payment History widget for Elementor and Bricks (#2930)
WordPress core's `.components-notice__actions` wrapper has a default `margin-top: 8px` which pushed the "Create Form" CTA below the vertical centre of the banner. Reset `margin: 0` and add `flex-shrink: 0` on `.components-notice__actions` inside the nudge scope so the button stays centred alongside the message text. Fixes #2943 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-alignment fix: reset notice actions margin to fix editor nudge button alignment
Version Bump 2.12.2
The global settings React app renders its sidebar navigation exactly once, via setTimeout( renderApp, 0 ). Pro (and third-party) bundles register their srfm.settings.navigation / page-content filters at module-eval time, but they are classic, parser-blocking footer scripts that load after the core settings bundle. setTimeout( 0 ) is not a safe barrier: it fires as soon as the HTML parser yields (e.g. while a later footer script is still downloading), which can be before those pro bundles execute. An early bundle (License tab) therefore always wins the race and renders, while a later one (Login/Registration) is intermittently dropped from the first — and only — paint. Render on DOMContentLoaded instead, which fires only after the document is fully parsed and every parser-blocking script has executed, guaranteeing all dependent filters are registered before the first render. Falls back to setTimeout( 0 ) if the document has already finished parsing.
…-race fix(settings): render global settings after all filters register (fixes missing Login/Registration tab)
…to dev-nr-2.12.2-2
Dev to Next Release 2.12.2
Auto-generated by /i18n command on PR #2946
chore: update i18n translations
Update the 2.12.2 changelog date in readme.txt and README.md.
chore: set 2.12.2 release date to 20th July 2026
- Set the 2.12.2 release date to 20th July 2026. - Remove the 'Description panel opens by default' fix line from the 2.12.2 changelog. Applied to both readme.txt and README.md.
…tes-2.12.2 chore: update 2.12.2 changelog (release date + remove Description-panel line)
…lock The WordPress.org deploy (New tag) started failing after #80ececd25 switched these workflows to 'npm ci'. Neither sets up Node, so they ran the runner's default (older) npm, which re-resolves the tree and reports 'Missing zod@4.4.3 from lock file'. With Node 24.16.0 (the repo's Volta pin, npm 11 — same as every other workflow and the lockfile generator), 'npm ci' is up to date and the deploy passes. No lock churn, no --force.
ci: pin Node 24.16.0 in deploy/asset workflows (fix npm ci zod@4.4.3 failure)
Revert the npm ci change from #80ececd25. npm ci hard-fails on the wp.org
deploy runner ('Missing: zod@4.4.3 from lock file') because the runner's
npm resolves the tree differently than the lockfile generator, blocking
the release. npm install --force (the long-standing, proven behavior)
installs successfully. Also drops the Node pin added in #2962 to restore
the exact prior working state.
…-install ci: revert deploy/asset workflows to npm install --force
Revert the npm install --force fallback (#2963) back to npm ci, pinning Node 24.16.0 (the repo's Volta version, npm 11 — same as the lockfile generator) via setup-node so npm ci resolves the tree consistently and stays reproducible. Restores the #2962 approach.
…e-setup ci: use npm ci with Node 24.16.0 in deploy/asset workflows
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Syncs
brainstormforce/sureforms@masterinto the public mirror.Upstream range:
590625e26..f3e10ae6b(455 commits)Internal-path strip: applied (70 files removed in one commit —
.claude,docs/,internal-docs/, allCLAUDE.md, internal release/CI workflows,bin/release scripts).The diff is computed against
public/mastervia a merge-cap commit (first parent =public/master), so no internal-file deletions appear — only real upstream changes (43 files).All commits carry verified signatures.
Highlights