Skip to content

Sync master from upstream - #119

Merged
vanshk141999 merged 37 commits into
masterfrom
sync/master-20260720
Jul 20, 2026
Merged

vanshk141999 merged 37 commits into
masterfrom
sync/master-20260720

Conversation

@vanshk141999

Copy link
Copy Markdown
Collaborator

Syncs brainstormforce/sureforms@master into the public mirror.

Upstream range: 590625e26..f3e10ae6b (455 commits)
Internal-path strip: applied (70 files removed in one commit — .claude, docs/, internal-docs/, all CLAUDE.md, internal release/CI workflows, bin/ release scripts).

The diff is computed against public/master via 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

1ece3d3f6 ci: use npm ci with Node 24.16.0 in deploy/asset workflows
dc9e930e7 ci: revert deploy/asset workflows to npm install --force
0ef550f82 ci: pin Node 24.16.0 in deploy/asset workflows so npm ci matches the lock
fcb58969e chore: update 2.12.2 changelog in readme
19b11808b chore: set 2.12.2 release date to 20th July 2026
71ce63249 chore: update i18n translations
6b9e47111 fix(settings): render global settings after all filters register
e28f46c29 Update 2.12.2 changelog entries
4aff89ba3 Version Bump 2.12.2
792aefca2 fix: reset notice actions margin to fix editor nudge button alignment
b773c3148 fix: address review — single Custom CSS output path + reusable-block detection
70602cf31 fix: open SureForms Description panel by default in the form editor
2abb31e8b refactor: make disable-default-styling programmatic-only
31c421534 feat: expose disable default styling toggle via Abilities API
89682bde8 test: add coverage for Payment History widgets; fix PHP Insights blank line
82a526fb4 feat: add Payment History widget to Elementor and Bricks (#2930)
cf8086448 ci: pin WP-CLI to v2.12.0 in update-translations workflow
80ececd25 ci: use npm ci instead of npm install --force in deploy/asset workflows
3df9c60c2 chore: update i18n translations
38166dbff chore: update 2.12.1 release date to 8th July 2026
fd5b4a364 test: cover disable-default-styling helpers and conditional style enqueue
a6346487a feat: per-form option to disable default SureForms styling + fix Custom CSS on single form view
2b7147833 chore: update BSF Analytics library to 1.1.29
d2c3fec41 Add changelog entry for email field RFC 5321 length limits (#2904)
5f18640b6 updated change log
840db6015 updated change log
b2d21598d Version Bump 2.12.1
db2e0a2de test(admin): add enqueue_styles coverage for Quill 1.x inline CSS
27f8af8bc fix: address code review comments for Quill 1.x list marker CSS
4835f4759 fix(email): resolve osk review — shared limits source, blur message, filter docs
96f82cdae test: add coverage for enqueue_ai_dashboard_widget_assets
1c46ad9cf fix(payment): exclude repeater children from field mappers, extract flattenBlocks
f1fb9ce84 fix: address adi review feedback on AI dashboard quick draft
5367b7950 fix(payment): list fields nested in container blocks in Email/Name mappers
e86b145d1 fix(payments): pin one-time Stripe intent payload to card
516eca083 refactor: clarify dashboard widget registration comment
489abf08a test: cover AI quick draft dashboard widget functions
6f6a60e48 Add dashboard AI quick draft flow with analytics tracking
a9d50cd71 fix: use inline ::before markers in confirmation message for correct alignment
839aa752c fix: apply Quill editor formatting in the confirmation message display

vanshk141999 and others added 30 commits July 7, 2026 16:29
…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.
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
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)
Auto-generated by /i18n command on PR #2946
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.
vanshk141999 and others added 7 commits July 20, 2026 15:14
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
@vanshk141999
vanshk141999 merged commit a57d818 into master Jul 20, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants